重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Perlは超初心者です。
既存テキストデータファイルを編集して、上書き保存できるようしたくて、次のようなテキストデータを
=====
山田
田中
加藤
 ・
 ・
=====
読込んで、次のようなHTMLを作成する様にしました。
<input type='text' name='name[0]' value='山田'>
<input type='text' name='name[1]' value='田中'>
<input type='text' name='name[2]' value='加藤'>
            ・
            ・
ここから、テキストボックスの値を編集して、Submitで別Perlプログラムにデータを送信し、次のようなプログラムでデータを読込めば
========================================================================
$count = $in{'count'}; #データのレコード件数です。ここは問題ありません。
for($x=0;$x<=$count;$x++){
$simei[x]=$in{'name[x]'};
}
========================================================================

$simei[0]=山田、$simei[1]=田中、$simei[2]=加藤、・・・と配列変数に入って、それをファイルに上書きするつもりだったのですが、変数には何も代入されないようです。
どうすれば、私の思うようになるでしょうか?

A 回答 (2件)

配列に入れることは無理です。

perlではなく、HTML/FORMの制限です。

配列は普通の文字に展開して、perlで受け取ったときに配列に分解してください。

for($x=0;$x<=$count;$x++){
$simei[$x]=$in{"name_$x"};
}

input の nameも同様にすれば OKでしょう。
    • good
    • 0
この回答へのお礼

先の質問から引続きありがとうございます。
早速作成するHTMLを
<input type='text' name='name[0]' value='山田'>

<input type='text' name='name_1' value='山田'> に

for($x=0;$x<=$count;$x++){
$simei[x]=$in{'name[x]'};
}

for($x=0;$x<=$count;$x++){
$simei[$x]=$in{"name_$x"};
}
にして実行してみましたが、やはり値を取得しません。
困ったな・・・
データをアップデートする方法の考え方自体おかしいのでしょうか?
一般的にはどんなふうにこの処理を行うのでしょうか?

お礼日時:2003/11/14 10:01

巧くいかないですか...。

私は実際この方法で巧くいってるのですが。
そうなると $in{}にちゃんと展開されているか、という問題になりますね。
while (($name, $value) = each(%in)) {
print "$name = $value\n";
}
で値がどういう風に格納されているか確認してください。

あと念のため。
> <input type='text' name='name_1' value='山田'> に
> for($x=0;$x<=$count;$x++){
> $simei[$x]=$in{"name_$x"};
> }
$x は 0から始まっているので、HTMLのname は name_0 にしないと、ですね。

この回答への補足

in{}にはデータが展開されていました。
ということは、それが配列に格納されないというところですね。う~ん、あれこれ試してみます。
すみませんね。何から何までお世話になります。

補足日時:2003/11/14 13:36
    • good
    • 0
この回答へのお礼

その後、いろいろ変更してやってみて、何とかうまく値を取得できました。おっしゃっていたとおりでした。
ありがとうございました。
感謝!感謝です。少々とろいのでいらいらするかもしれませんが、質問を上げたときは宜しくお願いします。

お礼日時:2003/11/14 15:38

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