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

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

レス数が1000を超えています。これ以上書き込みはできません。
00019882005/12/08(木) 22:48:27ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

過去ログやお勧めサイトは >>2-10
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 で勉強しようと思っているのならそれはやめた方がいい
今の君は付け焼き刃でどうにかなるレベルじゃない

もっと時間を掛けて、身銭を切って何冊か参考書を買うことが必要だ
0955nobodyさん2006/01/17(火) 16:22:38ID:???
>>945
続けたいなら下のスレでもリサイクルしてくれ。

もっと軽くて渋いCGI.pmを創ろう
http://pc8.2ch.net/test/read.cgi/php/1009255955/
0956nobodyさん2006/01/17(火) 16:23:01ID:???
>>952

一応書いてる。まぁ他の作業の暇にだから夕飯食い終わった後にまた来てみ。
0957nobodyさん2006/01/17(火) 16:25:27ID:???
>>956
ありがとうございます。
了解しました。
0958nobodyさん2006/01/17(火) 16:26:15ID:???
>>954
はい、ありがとう。
0959nobodyさん2006/01/17(火) 17:00:03ID:???
('A`)
0960nobodyさん2006/01/17(火) 18:08:25ID:???
>>955
それは良いアイデアだ。質問スレでこれ以上無駄な議論が
繰り返されないために、次スレのテンプレに以下を追加して欲しい。

CGI.pm批判、代替ルーチンなどCGI.pmに関する話題は以下のスレで。

もっと軽くて渋いCGI.pmを創ろう
http://pc8.2ch.net/test/read.cgi/php/1009255955/
0961nobodyさん2006/01/17(火) 18:29:31ID:???
>>960
無駄な議論かどうかって、どう判断するの?
0962nobodyさんNGNG
しーっ!
0963nobodyさん2006/01/17(火) 18:47:36ID:???
うむ。

無駄な議論の定義を作っておかないとね。
0964nobodyさん2006/01/17(火) 18:55:19ID:???
フォームで複数選択可能な項目が有る時には同じ名前で違った値が入力されますが、cgi-libでは
$in{$key} .= "\0" if (defined($in{$key}));
の様にしてセパレータを使って複数の値をセットしてました。
cgi-libを見るまえに同じことを自分で書いてたのですが、自分のソースは\0ではなく\tを使ってたました。
\tより\0を使ったほうがいいのでしょうか?
0965nobodyさん2006/01/17(火) 19:01:35ID:???
>>963
無駄な議論の定義は今回は必要ないだろ。
CGI.pm と query の処理関係の、質問以外はそっちに誘導してしまえばいいのだ。
ここは質問スレ。
0966nobodyさん2006/01/17(火) 19:20:57ID:???
>>965
初心者スレだから、query処理の質問に対する
答えはCGI.pm使えで良いんじゃない?
それに満足できない人はそっちのスレへ誘導と。
0967nobodyさん2006/01/17(火) 19:24:53ID:???
流れを読む限りCGI::Minimal派と自作派でCGI派は居なかったはずと訂正しとく。
あと初心者には組み込み関数のほうが使いやすいと思われ。
0968nobodyさん2006/01/17(火) 19:28:31ID:tDsfmN2q
SSIでブラウザごとに違うページへ飛ばすプログラムを作成したいと考え、index.shtmlへアクセスした際に
環境変数でブラウザ等を判別し、それぞれ別のファイルへ飛ばす方法を検索したのですが、見つける事ができませんでした。

CGIなら Location:各ページのURI で出来たのですが、SSIではどうすれば良いでしょうか?
0969nobodyさん2006/01/17(火) 20:06:47ID:???
>>965
何を「無駄な議論」にするか定義しておかないと、
初心者の質問を装って面倒臭い話始めちゃうぞ。
0970nobodyさん2006/01/17(火) 20:08:20ID:???
玄人から見るとこのスレが無駄
ってなっちゃうから何が不要なのをハッキリと
0971nobodyさん2006/01/17(火) 20:10:18ID:???
無能なスクリプトしか書けない人間しか来ないんだし、
WebProg 自体が不要じゃね?
0972nobodyさん2006/01/17(火) 20:23:49ID:???
>>964
今時は配列に入れる。
0973nobodyさん2006/01/17(火) 20:26:19ID:???
今時は Ajax でほげるので、form の中身をまとめて post なんて
間抜けなことはしない。
0974nobodyさん2006/01/17(火) 20:51:13ID:???
>>973
Ajaxを使うとすると、選択する度にサーバへ情報を送る訳ですね?
となると、情報の保持にはセッションを利用するんでしょうか。
0975nobodyさん2006/01/17(火) 21:04:12ID:???
>>957

いちおうできたよ。

http://up.spawn.jp/file/up9550.zip

まだまだ未熟です orz
0976nobodyさん2006/01/17(火) 21:22:18ID:???
>>975
ありがとうございました。
全然見たこともないような書き方をしていたので
びっくりでした。
今日はもう寝るところでしたので
明日の朝また見直したいと思います。
お疲れ様でした。
0977nobodyさん2006/01/17(火) 22:31:33ID:???
>>974
ふつーに考えて、何らかのセッションを維持しなければそういうことできないよね。
0978nobodyさん2006/01/17(火) 22:38:00ID:???
>>975
そんな暇なことせずに HTML::FillInForm を使えば?
http://search.cpan.org/search?query=HTML%3A%3AFillInForm&mode=all

FormValidator に関しても、各種あります。
http://search.cpan.org/search?query=FormValidator&mode=all
0979nobodyさん2006/01/17(火) 22:38:46ID:???
> 今日はもう寝るところでしたので
> 明日の朝また見直したいと思います。

結局、こういう人間が質問してるんだよね。
0980nobodyさん2006/01/17(火) 22:57:42ID:???
>>979
学校の課題だろどうせ
0981nobodyさん2006/01/17(火) 23:00:51ID:???
寝る時間さえ自由に決めさせてくれないスレはここですか?
0982nobodyさん2006/01/17(火) 23:02:19ID:???
>>968
<meta http-equiv="refresh" 〜> かな。

>>969
話の筋からするとquery処理かな。
>>955 のスレにも >>945 みたいなのを貼ってあったし。
0983nobodyさん2006/01/17(火) 23:08:08ID:???
高々数百kのクエリー受け付けるのに何倍もメモリー使う俺関数は神だな。
0984nobodyさん2006/01/17(火) 23:13:45ID:???
今時メモリーなんて無限にあると考えてもよいのでは?
0985nobodyさん2006/01/17(火) 23:15:16ID:???
メモリよりはプロセス数の方が怖いね
0986nobodyさん2006/01/18(水) 00:03:32ID:???
メモリのほうが恐いよ。
0987nobodyさん2006/01/18(水) 00:10:54ID:???
搭載メモリに応じて走らせられるプロセス数が決まる訳で、
そいうこと考えられない人間はエスパーにしか見えないんだが
0988nobodyさん2006/01/18(水) 00:22:07ID:???
うーん。どうだろ。
ほとんどの鯖では、プロセス数を設定で抑えてるからなぁ。
0989nobodyさん2006/01/18(水) 00:31:17ID:???
意味無い議論な上に極端だなぁ。
メモリがいくらあってもプロセス数の制限があっても、
処理が遅かったら微妙だしな。
バランスよ。バランス。
そんな事もわからんのか。
0990nobodyさん2006/01/18(水) 01:17:50ID:???
藻前の脳内常識が通用するとは限らんよ。
0991nobodyさん2006/01/18(水) 02:04:08ID:???
言い切らない辺りに自信のなさを感じますね
0992nobodyさん2006/01/18(水) 02:07:24ID:???
ガキじゃないってこと
0993nobodyさん2006/01/18(水) 02:08:34ID:???
「自身がある」ならば、「言い切る」ということにしたいんだろうか。
0994nobodyさん2006/01/18(水) 02:09:33ID:???
みんな次スレを忘れてないか。
漏れが建ててくる
0995nobodyさん2006/01/18(水) 02:11:02ID:???
次スレなんて必要ないのでは?
0996nobodyさん2006/01/18(水) 02:11:44ID:???
通用するとは限らない=通用する場合もあるし、しない場合もある

否定になっとらんね。
0997nobodyさん2006/01/18(水) 02:12:31ID:???
>>996
> 否定になっとらんね。

何を否定?

意味不明ですね。
0998nobodyさん2006/01/18(水) 02:16:13ID:???
>脳内常識
思いっきり否定してるなw
0999nobodyさん2006/01/18(水) 02:18:59ID:???
>>990さんは華麗に揚げ足取りしたつもりでした。
1000nobodyさん2006/01/18(水) 02:20:25ID:???
へー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。