トップページ⇒php
1001コメント328KB

Perlコーディング初心者質問スレ Part 45

レス数が950を超えています。1000を超えると書き込みができなくなります。
00019882005/12/08(木) 22:48:27ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0855nobodyさん2006/01/17(火) 02:02:59ID:???
個人的には>>772みたいにスコープ無視なサブルーチンはごめん被りたいところだね。
0856nobodyさん2006/01/17(火) 02:04:37ID:???
>>854
> ヴァージョン

なんて書くやつはばかです。

> パッケージ

どうせなら、パッケイジって書けばいいのに。
0857nobodyさん2006/01/17(火) 02:07:12ID:???
>851
>結局は日本語を読めない奴が増えただけかよ
激しく同意。
851 には >797,>808 が読めないんだからな
0858nobodyさん2006/01/17(火) 02:11:07ID:???
> 851 には >797,>808 が読めないんだからな

ということにしたいのですね。
0859nobodyさん2006/01/17(火) 02:14:53ID:???
>858
それ3つとも俺w
俺じゃ出来ないから出来る人の改良ソースを待ってるわけでですよ。
0860nobodyさん2006/01/17(火) 02:19:58ID:???
851=797=808 ?
だとすると、851 はモジュール使わない改良ソースを待っているのか?
0861nobodyさん2006/01/17(火) 02:26:34ID:???
だから書けないから待ってるとw
0862nobodyさん2006/01/17(火) 02:29:47ID:???
モジュールを使う派 vs モジュールを使わない派 の議論だと思ってたが違うのか?
0863nobodyさん2006/01/17(火) 02:39:01ID:???
議論するくらいならそこはモジュール使うことにしておいて
空いた時間で他の生産的な事をしろ、ってのがPerlだと思う。
0864nobodyさん2006/01/17(火) 02:43:40ID:???
>863
プログラミングはすべてそうだと思うけど…
0865nobodyさん2006/01/17(火) 02:48:02ID:???
モジュール使えない環境なので、
どなたか最適なデコード方法教えてください>w<
0866nobodyさん2006/01/17(火) 02:52:10ID:???
>863,>864
いや、この板には
・モジュールは重くて邪魔だ。
・これまでモジュールを使ってこなかったが、困らなかった。
・実は、オブジェクトがなんなのかわからないんだけど、分からないことがばれると恥ずかしい
等、様々な理由で、モジュール使いたがらない人たちが多いのですよ。
0867nobodyさん2006/01/17(火) 02:57:37ID:???
>・実は、オブジェクトがなんなのかわからないんだけど、分からないことがばれると恥ずかしい
ソレダ!
0868nobodyさん2006/01/17(火) 03:05:48ID:???
普通にそれ
というかイマイチ有用性がわからんのもある
0869nobodyさん2006/01/17(火) 03:06:00ID:???
無限ループって怖くね?
0870nobodyさん2006/01/17(火) 03:08:19ID:???
だって同じことが繰り返されるんだぜ?
0871nobodyさん2006/01/17(火) 03:30:52ID:???
単にソースクレクレ君が張り付いてるだけだ。
伝家の宝刀は「このスレは回答者も初心者なんですね」。
この文句には注意な。
0872nobodyさん2006/01/17(火) 03:56:07ID:???
> ・モジュールは重くて邪魔だ。
> 等、様々な理由で、モジュール使いたがらない人たちが多いのですよ。

mod_perl とか fastcgi とか lighttpd とか使えないような、
貧乏仕様の ISP 貸し出し環境の人が多いということですか。

それとも、cgi を呼ぶと必ずモジュールのロードからするものが Perl だ
とか思ってるんかな。
0873nobodyさん2006/01/17(火) 03:56:35ID:???
>>868
自分が必要としていない物の有用性を幾ら説かれても理解には至らんよ。
コードに対する要求レベルは人それぞれで、KENT で充分だと感じる人も
いれば、CPAN にあるモジュールはどれも汚くて書き直したくなる、という
人もいる。この二者が納得するコードなんて書きようがないし、より高い
レベルを要求する事が常に正しいとは限らない。

だから妥協点として、公式マニュアル (perldoc) に書かれている事を指針
にしときましょう、というのが現実的な解。perldoc が難解だと感じるなら
Perl コミュニティ的に「平均」より下。perldoc すら甘いと考えているなら
厳しすぎ。
0874nobodyさん2006/01/17(火) 03:59:27ID:???
> より高いレベルを要求する事が常に正しいとは限らない。

そもそもレベルの高低の客観的な評価基準きぼん。

> だから妥協点として、公式マニュアル (perldoc) に書かれている事を指針
> にしときましょう、というのが現実的な解。

それは、どこらへんの「現実」?

> perldoc が難解だと感じるならPerl コミュニティ的に「平均」より下。

それは、どこらへんの「Perl コミュニティ」?
「平均」の算出方法も明確にしておいてね。
0875nobodyさん2006/01/17(火) 04:06:01ID:???
埋め
0876nobodyさん2006/01/17(火) 04:07:20ID:???
齲女
0877nobodyさん2006/01/17(火) 04:08:17ID:???
>>873
おまえ面白いな。
0878nobodyさん2006/01/17(火) 04:09:44ID:???
梅
0879nobodyさん2006/01/17(火) 04:10:26ID:???
宇目
0880nobodyさん2006/01/17(火) 04:21:05ID:???
梅
0881nobodyさん2006/01/17(火) 04:25:26ID:???
無限ループってこわくね?
0882nobodyさん2006/01/17(火) 04:27:54ID:???
だって同じことが繰り返されるんだぜ?
0883nobodyさん2006/01/17(火) 04:29:40ID:???
単にソースクレクレ君が張り付いてるだけだ。
伝家の宝刀は「このスレは回答者も初心者なんですね」。
この文句には注意な。
0884nobodyさん2006/01/17(火) 04:57:07ID:tDsfmN2q
Perlで掲示板を作成したのですが、表示されるHTMLにPHPを使用したいのでprint等で記述しても、エラーになってしまいます。

Perl内でPHPを使用するにはどうすれば良いでしょうか?
0885nobodyさん2006/01/17(火) 04:57:28ID:???
>861,>865
話の流れが理解できているなら、ソースを待っていても、>854 以上のものは出ないことは明白。
待ってても無駄だよ。
0886nobodyさん2006/01/17(火) 05:00:18ID:???
>884
「表示されるHTMLにPHPを使用したいので」
のところが意味不明。

いったい何をprint等で記述したか書いてごらん。
0887nobodyさん2006/01/17(火) 05:20:40ID:???
いや結果的にCGI.pmに、またはCGI.pmを改良したものに行き着くことぐらいは分かる
「>772をまずはこうやって・・・次にこうやって・・・」であれば>772のどこが悪いってのわかりますよね?
ちなみに>772は私がstrictで書く前の代物だったりします (書き直したものはstrictでとりあえず動いてるもののエラーチェックは細かくやってない)

ツッコミどころ云々とか言うだけ言って改良案すらも出ないのかなと
(出たのはread()に関するとこだけ)

ここが上級者スレならスルーはわかるけど・・・


>886
>884は print "echo $char\n"; とか出力して、PHP の echo の動作しない
というのが言いたいと思う

>884
無理かと
perlでPHPのファイル出力してそれをクリックさせるか、CGIとして出力したPHPファイルをperlから呼び出すかぐらいじゃないでしょか?
というか、そもそもそんなことやる必要があるんですか? 無駄だと思うのですが・・・
0888nobodyさん2006/01/17(火) 05:53:42ID:???
<?php virtual("hoge?cgi"); ?>
でPHPに埋め込むのではいかんのか
0889nobodyさん2006/01/17(火) 05:59:37ID:???
>>859
ちょwwwさりげなく俺の発言まで自分の発言にするなよw
>>808はお前が書いたんじゃないだろ。
他のは知らないが。
0890nobodyさん2006/01/17(火) 06:16:16ID:???
>884
先に、hoge.php があるのなら、
print qx[php "hoge.php"]

phpスクリプトを生成するなら
my $php_code='echo "$char\n";';
print qx[php -r "$php_code"];
で何とかなるかもwww
0891nobodyさん2006/01/17(火) 06:28:38ID:???
>>887
人に文句付ける前に、お前が改良案出してやれよ。

>>884
やりたいことが>>887の通りだとしたら、
出来ないことはないけど、お勧めしない。
PHPはCLI版またはCGI版があることが条件で、
CLI版の場合はあらかじめヘッダを出力してあげること。

# print "Content-type: text/html\n\n";
open(PHP, "| /usr/local/bin/php") or die;
select(PHP);
print while(<DATA>);
close(PHP);
exit;

__END__
<?
echo "hello, world!";
?>
0892nobodyさん2006/01/17(火) 08:23:47ID:???
先に文句付けられた方なのですがorz

>>889
あっ、よく見てなかったw
808は私ではない
0893891=7672006/01/17(火) 08:57:58ID:???
>>892
知らんがな。

ま、私を煽っても何も出ないよ。
0894nobodyさん2006/01/17(火) 09:06:52ID:???
>>772をちょっと修正

sub decode {
  my ( $buffer, %in );
  if($ENV{'REQUEST_METHOD'} eq 'POST'){
    if( $ENV{'CONTENT_LENGTH'} > 1024 ) { die 'CONTENT_LENGTH error' }
    binmode(STDIN);
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
  }elsif($ENV{'REQUEST_METHOD'} eq 'GET'){
    $buffer = $ENV{'QUERY_STRING'};
  }else{ die 'REQUEST_METHOD error' }
  my @pairs = split(/&/, $buffer);
  foreach my $pair (@pairs) {
    my ($name,$value) = split(/=/,$pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $in{$name} = $value;
  }
  return %in;
}
0895nobodyさん2006/01/17(火) 09:16:43ID:nYyzHE1C
現在、携帯用のサイトを作っています。

メールフォームを利用したページを作っているんですが、
記入漏れがあった時、エラーを表示するようにPERLでプログラムしていて
前のページへ戻ると全て入力したものが消えています。

携帯電話でアクセスした場合、メールフォームに入力したデータが
キャッシュに残っていないのは仕方のないことなのでしょうか?
これはCGIのほうで、どうにかするべき問題ですか?
それともHTMLの記述の中でデータ入力したもののキャッシュを
残すように出来るのでしょうか?
0896nobodyさん2006/01/17(火) 09:24:09ID:???
記入漏れがある場合は、エラーページを作るのではなくて、
その記入用画面をまた表示する。その際、
・ページ冒頭で記入漏れがある旨を伝え、それを埋めるように催促する
・正しいデータが送られた部分にはそのデータを初期値として表示
・正しくないデータの部分にはそれと分かるように印をつけて空欄で表示
として、記入漏れのあるところだけ埋めてもらうようにするのがいい。
0897nobodyさん2006/01/17(火) 09:55:43ID:nYyzHE1C
>>896
なるほど、引き渡した変数をそのまま利用して、記入漏れの箇所に対してのみ
再度入力を求める形にすればいいということですね。

ただ気になるのが、きっと print ""; を使うことになると思いますが、
例えば名前が 山田 太郎 と入力されたものとして、
年齢が未入力だった場合、どういう記述の方法をとりますか?

名前の箇所の 山田太郎 は正しかったものとして
ただHTMLで文字として表示させて

未入力だった箇所の年齢は 再度入力ボックスを出すという形ですか?
また変数を、こういう形で受け継がせる方法に最適な案などご存知でしたら
ぜひご教授ください  
0898nobodyさん2006/01/17(火) 12:16:30ID:???
>>897
その辺は好きずき。自分がやるならエラーがなくならない限り
すべての項目を再入力可能にしておくけど。
0899nobodyさん2006/01/17(火) 12:21:24ID:???
伸びてると思ったらまたアレか・・いい加減しつけぇよ
0900nobodyさん2006/01/17(火) 12:29:07ID:???
ファイルが読み書き込み可能かチェックをするとき、

unless(
-e $file and
-f $file and
-r $file and
-w $file
) {
print 'NG';
}

のようにファイルがあるか⇒ファイルか⇒読み書き込み可能か
と全部チェックすべきでしょうか?
それとも、-r, -w のみのチェックでも大丈夫でしょうか?
0901nobodyさん2006/01/17(火) 12:45:01ID:???
>>900
-f が真になるなら -e は常に真。
無駄なシステムコールを省く為、二つ目以降は _ を使う。
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item__i__X__i__FILEHANDLE

よって unless (-f $file && -r _ && -w _) { ... }
09029002006/01/17(火) 12:57:57ID:???
>>901

下線だけからなる特別なファイルハンドルがあるとは知りませんでした。。。

非常に勉強になりました。
ありがとうございす。
0903nobodyさん2006/01/17(火) 13:00:56ID:???
>>898
またもや、項目を入力可能にしておくとは言えども、
前ページで入力したデータが エラーの出たとこ以外には
デフォで入ってる状態で表示させるんですよね?

HTMLでそんなタグありましたっけ?
0904nobodyさん2006/01/17(火) 13:07:33ID:???
ある
0905nobodyさん2006/01/17(火) 13:11:38ID:nYyzHE1C
>>904
0906nobodyさん2006/01/17(火) 13:14:18ID:???
>>904

<input value=hensuu>

のvalueとこに変数を渡して、そのまま

print ""; 使ってHTML出力してしまえば、前ページで入力したデータが
デフォで入ってる状態になるところまでは分かったのですが、

checkboxやselect typeだと出来なくないですか? 
0907nobodyさん2006/01/17(火) 13:27:43ID:???
まずはプログラミングの基礎だな。
0908nobodyさん2006/01/17(火) 13:33:08ID:???
>>907

<select NAME="県別" SIZE="1">
<option VALUE="北海道">北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
<select>

前ページで
「北海道」を選んでいたが、 メアドの項目でエラー出たとき
県別のvalueに与えられていた”北海道”のデータを そのまま引き継ぐには

selectedを使って、どうのような方法がありますか?
0909nobodyさん2006/01/17(火) 13:38:23ID:???
>>908
s/( VALUE="$form{'県別'}")/$1 selected/;
0910nobodyさん2006/01/17(火) 13:41:29ID:???
HTMLのリファレンスを探してこい。
0911nobodyさん2006/01/17(火) 13:42:16ID:???
北海道がクエリーに入ってたら北海道の項に selected="selected" 挿入して
ユーザーに投げてやればいいでしょ。

何を質問してるのか解らん。
0912nobodyさん2006/01/17(火) 13:44:04ID:???
>>909
ありがとうございます。
ただ、その場合は 北海道だけがプルダウンセレクトで出てきて
他の県を選べなくなりますよね?

もし、県別のとこも、エラー出たあとに、他の県に修正できるようにする方法は
ありませんか?
0913nobodyさん2006/01/17(火) 13:45:22ID:???
馬鹿すぎww
0914nobodyさん2006/01/17(火) 13:47:09ID:???
さすがwebprog板・・
0915nobodyさん2006/01/17(火) 13:51:21ID:???
>>910
いろいろ見ているのですが、申し訳ない。

>>911
分かりづらい説明ですいません。

最初のフォーム入力ページでは
<select NAME="県別" SIZE="1">
<option VALUE="" selected>北海道</option>
<option VALUE="北海道">北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
<select>
というふうに デフォでは "--"と表示されていて”県別”の中身は空ですが、
もし、北海道をここで選んで、他の項目でエラーが出た場合、
表示されるページで ”北海道”がデフォで選ばれてる状態にして
なおかつ、他の県にも修正が効く状態にしておきたいんです。
0916nobodyさん2006/01/17(火) 13:52:14ID:???
本当に初歩な質問で申し訳ないんですが、調べてみてるんですが
分からないんです。すいません。
0917nobodyさん2006/01/17(火) 13:56:21ID:???
Perlコーディング以前の質問だろ
スレ違い、さっさと失せろ
0918nobodyさん2006/01/17(火) 13:59:16ID:???
申し訳ない。スレ汚してすいませんでした。
スレ移動します。
0919nobodyさん2006/01/17(火) 14:00:37ID:???
>>915
選ばれたものが selected になればよいと言って分かる?
分からなければ制作板で HTML の勉強しといで
0920nobodyさん2006/01/17(火) 14:02:06ID:???
>>919
はい、分かります。
0921nobodyさん2006/01/17(火) 14:03:23ID:???
>>919

>>915で、記述ミスしてました。
北海道のところがselectedじゃなくて、  "--"の行がデフォではselectedでした。
0922nobodyさん2006/01/17(火) 14:06:39ID:???
>>921
おまえはいっぺん死ね
0923nobodyさん2006/01/17(火) 14:07:19ID:???
>>922
すいません。。。。
0924nobodyさん2006/01/17(火) 14:08:05ID:???
こういうやつの書いたスクリプトも結局はアップされて走らされるんだからなぁ
酷使されてる鯖カワイソス
0925nobodyさん2006/01/17(火) 14:09:53ID:???
スクリプト全部アップしてみ。
俺が書きなおしてやる。
0926nobodyさん2006/01/17(火) 14:12:35ID:???
まず普通に本を読んでこのレベルなら諦めた方がいいと思うね
0927nobodyさん2006/01/17(火) 14:15:18ID:???
自分の頭の悪さを責めろ
0928nobodyさん2006/01/17(火) 14:28:29ID:???
>>925
今、まとめてます。
ちょっと待ってください。

ありがとうございます
0929nobodyさん2006/01/17(火) 14:31:39ID:???
>>925
これがHTMLの部分です。

<HTML><HEAD>
<TITLE>問い合わせ</TITLE></HEAD>
<BODY>
<form action="toiawase.cgi" method="post">
<BR>
氏名:<input size="20" type="text" name="氏名">
<BR>
県別:<select NAME="県別" SIZE="1">
<option VALUE="" selected>--</option>
<option VALUE="北海道">北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
<select>
<BR>
持ってる免許:
<input type="checkbox" name="免許車" value="CAR">
<input type="checkbox" name="免許バイク" value="BIKE">
<input type="checkbox" name="免許船" value="SHIP">
<BR><BR>
<input TYPE="submit" VALUE="送信">
<FORM></BODY></HTML>
0930nobodyさん2006/01/17(火) 14:35:20ID:???
>>929
</option>って要らなくね?
0931nobodyさん2006/01/17(火) 14:36:02ID:???
それと<select>タグ、ちゃんと閉じてね。
0932nobodyさん2006/01/17(火) 14:36:59ID:???
<FORM>(ry
09339292006/01/17(火) 14:40:00ID:???
上の入力フォームで

名前= 未記入
県別= 北海道を選んだ
持ってる免許= 免許車、 免許バイク

を選んだとして、「名前の未記入のみ」に対して
もう一度記入してくださいという、画面を出力して出したいんです。
その際には、 県別が「北海道」ということと、免許が「免許車、免許バイク」と分かっているので
と吐き出したいんです。
<HTML><HEAD>
<TITLE>問い合わせ</TITLE></HEAD> <BODY>
未記入の項目がありました。<BR><BR>
<form action="toiawase.cgi" method="post"> <BR>
氏名:<input size="20" type="text" name="氏名"> <BR>
県別:<select NAME="県別" SIZE="1">
<option VALUE="">--</option>
<option VALUE="北海道" selected>北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
</select> <BR>
持ってる免許:
<input type="checkbox" name="免許車" value="CAR" checked>
<input type="checkbox" name="免許バイク" value="BIKE" checked>
<input type="checkbox" name="免許船" value="SHIP">
<BR><BR>
<input TYPE="submit" VALUE="送信">
<FORM></BODY></HTML>
0934nobodyさん2006/01/17(火) 14:40:52ID:???
>>933
最後は</FORM>の閉じ忘れでした。
すいません
0935nobodyさん2006/01/17(火) 15:01:05ID:???
>>934

自分なりにどういうスクリプト書いてみたかもアップして。
アップローダー使ってね。
0936nobodyさん2006/01/17(火) 15:08:07ID:???
>>935  >>929を訂正して 下のように
免許部分を1から3にします。

<HTML><HEAD>
<TITLE>問い合わせ</TITLE></HEAD>
<BODY>
<form action="toiawase.cgi" method="post">
<BR>
氏名:<input size="20" type="text" name="氏名">
<BR>
県別:<select NAME="県別" SIZE="1">
<option VALUE="" selected>--</option>
<option VALUE="北海道">北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
<select>
<BR>
持ってる免許:
<input type="checkbox" name="免許1" value="CAR">
<input type="checkbox" name="免許2" value="BIKE">
<input type="checkbox" name="免許3" value="SHIP">
<BR><BR>
<input TYPE="submit" VALUE="送信">
<FORM></BODY></HTML>
930 名前: nobodyさん [sage] 投稿日: 2006
0937nobodyさん2006/01/17(火) 15:12:02ID:???
935 名前:nobodyさん[sage] 投稿日:2006/01/17(火) 15:01:05 ID:???
>>934

自分なりにどういうスクリプト書いてみたかもアップして。
アップローダー使ってね。
アップローダー使ってね。
アップローダー使ってね。
アップローダー使ってね。
アップローダー使ってね。
0938nobodyさん2006/01/17(火) 15:17:07ID:???
>>936の「免許」の部分は1〜3じゃなくて、全て「免許」で統一でした。

フォームから引き渡した数を
$form{'氏名'} = ""
$form{'県別'} = "北海道"
$form{'免許'} = "CAR,BIKE"

としたときに、 HTMLで下のように吐き出すようなスクリプトを教えてください。

<HTML><HEAD>
<TITLE>問い合わせ</TITLE></HEAD> <BODY>
未記入の項目がありました。<BR><BR>
<form action="toiawase.cgi" method="post"> <BR>
氏名:<input size="20" type="text" name="氏名"> <BR>
県別:<select NAME="県別" SIZE="1">
<option VALUE="">--</option>
<option VALUE="北海道" selected>北海道</option>
<option VALUE="青森県">青森県</option>
<option VALUE="岩手県">岩手県</option>
<option VALUE="宮城県">宮城県</option>
<option VALUE="秋田県">秋田県</option>
<option VALUE="山形県">山形県</option>
</select> <BR>
持ってる免許:
<input type="checkbox" name="免許" value="CAR" checked>
<input type="checkbox" name="免許" value="BIKE" checked>
<input type="checkbox" name="免許" value="SHIP">
<BR><BR>
<input TYPE="submit" VALUE="送信">
<FORM></BODY></HTML>
0939nobodyさん2006/01/17(火) 15:19:10ID:???
>>935
スクリプト自体はまだ、出来あがってはいませんので
アップできませんが、上のような形でHTMLを吐き出してくれる方法だけでも
教えてもらえませんか?
0940nobodyさん2006/01/17(火) 15:25:27ID:???
>>939
教えてもらえません。
お前の屑スクリプトが動くところがみたいんじゃなくて、
お前がそれ相応の努力をしたかどうかがみたいんだ。
だから書きかけでもうpが先。
0941nobodyさん2006/01/17(火) 15:26:55ID:???
氏名のところが記入済みのときは、ただ単に下のように
inout valueのところに名前の変数をデフォで表示させておけば
問題ないと分かったんですが・・・・

$NAME=$form{'氏名'};

print "
<HTML><HEAD>
<TITLE>問い合わせ</TITLE></HEAD> <BODY>
未記入の項目がありました。<BR><BR>
<form action=toiawase.cgi method=post> <BR>
氏名:<input size=20 type=text name=氏名 value=$NAME> <BR>
県別:<select NAME=県別 SIZE=1>
<option selected>--</option>
<option VALUE=北海道>北海道</option>
<option VALUE=青森県>青森県</option>
<option VALUE=岩手県>岩手県</option>
<option VALUE=宮城県>宮城県</option>
<option VALUE=秋田県>秋田県</option>
<option VALUE=山形県>山形県</option>
</select> <BR>
持ってる免許:
<input type=checkbox name=免許 value=CAR>
<input type=checkbox name=免許 value=BIKE>
<input type=checkbox name=免許 value=SHIP>
<BR><BR>
<input TYPE=submit VALUE=送信>
<FORM></BODY></HTML>
";
0942nobodyさん2006/01/17(火) 15:28:03ID:???
>>903-941
丸投げ度に応じて適切と思われるスレに移動してくれ。

自分の作ったCGIスクリプトをデバッグするスレ
http://pc8.2ch.net/test/read.cgi/php/1011174442/

手伝ってくれるかた募集
http://pc8.2ch.net/test/read.cgi/php/1083303786/

【CGI】合同開発室
http://pc8.2ch.net/test/read.cgi/php/1001950501/

■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/

依頼されたツールを誰かが作るスレ
http://pc8.2ch.net/test/read.cgi/php/1078997682/
0943nobodyさん2006/01/17(火) 15:28:16ID:???
>>940
わかりました。
がんばってみて、うpってみます
0944nobodyさん2006/01/17(火) 15:40:29ID:???
とりあえずボロボロですが、

http://www.uploda.org/file/uporg288825.txt.html

パスはwebprog です。
0945nobodyさん2006/01/17(火) 15:52:54ID:???
>>894 の $buffer のスコープを狭くして参照を返してみる。

sub decode {
  my @pairs = split(/[&;]/, do {
    if ($ENV{'REQUEST_METHOD'} eq 'POST') {
      if ($ENV{'CONTENT_LENGTH'} > 1024) { return undef; }
      my $buffer;
      binmode(STDIN);
      read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
      $buffer;
    } elsif ($ENV{'REQUEST_METHOD'} eq 'GET' or $ENV{'REQUEST_METHOD'} eq 'HEAD') {
      $ENV{'QUERY_STRING'};
    } else { return undef; }});
  my %in;
  foreach my $pair (@pairs) {
    my ($name, $value) = split(/=/, $pair, 2);
    $name =~ tr/+/ /; $value =~ tr/+/ /;
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $in{$name} = $value;
  }
  return \%in;
}
0946nobodyさん2006/01/17(火) 15:54:08ID:???
とりあえず KENT は参考にしないでほしい
0947nobodyさん2006/01/17(火) 15:55:46ID:???
>>945

クエリーストリング付きのURIにPOSTでデータ投げたときってどうなるの?
0948nobodyさん2006/01/17(火) 15:58:09ID:???
CGI の勉強をしたいんですが、KENT ってホームページで勉強してもいいですか?
0949nobodyさん2006/01/17(火) 15:58:23ID:???
www突っ込むところそこじゃないだろ。
0950nobodyさん2006/01/17(火) 15:59:24ID:???
>>947
投げて実験してみればわかるのでは?
0951nobodyさん2006/01/17(火) 16:01:20ID:???
やらなくても解るがな。
09529442006/01/17(火) 16:11:28ID:???
すいません、自分にレスが来ているのかどうかさえ、
文面から判断できません。
0953nobodyさん2006/01/17(火) 16:14:06ID:???
>>944
他行ったら? たぶんアンタは2ch向いてない。
0954nobodyさん2006/01/17(火) 16:22:28ID:???
>>952
2ch で勉強しようと思っているのならそれはやめた方がいい
今の君は付け焼き刃でどうにかなるレベルじゃない

もっと時間を掛けて、身銭を切って何冊か参考書を買うことが必要だ
レス数が950を超えています。1000を超えると書き込みができなくなります。