電子書籍の厳選無料作品が豊富!

つたなくもperlを使ってCGIスクリプトを作っている者です。

<input type="checkbox" name="test" value="1">1
<input type="checkbox" name="test" value="2">2
<input type="checkbox" name="test" value="3">3

上記のように、nameは全て同じ名前にして、データを受け取りたいと思っています。

ただ、
if($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{CONTENT_LENGTH});
}
require './jcode.pl';

@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# 文字コードをS-JIS変換
&jcode'convert(*value, "sjis", "", "z");
$data{$name} = "$value";

と、最初に$data{test}に格納をしています。
現在は全ての項目にチェックをいれても、
3 と表示されてしまいます。

なんとかjcode.lib以外のモジュールを使わないで、
$data{test}に選択された全ての項目を入れることはできないでしょうか。
ご教授いただけましたら幸いです。

A 回答 (2件)

こういう場合いろいろなやり方があると思いますが、



if($name eq "test"){$data{$name} .= $value.',';}
else{$data{$name} = $value;}

として、$data{test} = 1,2,のようにカンマで区切った形でデータを保存しておいて、
データを使用するときに、
my @data = split(/,/$data{test});
として、データを取り出してやればどうでしょう??
    • good
    • 0
この回答へのお礼

なるほど!!
本当に助かりました。
有難うございます。

お礼日時:2005/08/15 13:11

すみません、splitのところがまちがってました。


my @data = split(/,/,$data{test});
でした。
ご迷惑をおかけしました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!