こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数の配列の要素を繰り返し処理をして書き込むと変数の中身がおかしくなってしまいます。

いつもお世話になります
複数の配列の要素を繰り返し処理をして書き込むと変数の中身がおかしくなってしまいます。
ポストメソッドで複数のテキストを受けて書き込みたいのですが、書き込む内容が""になってしまいます

print qq|<form action=\"$myself\" method=\"POST\">\n|;

LOOP:foreach $i (0..7) {
foreach $j ($x..$x + 3) {

print qq|@eqipument[$j]<input type=text name="arg_$j" size_1=35>\n|;

last LOOP if ($j == $#eqipument);
}
$x = $x + $x_colm;
print qq|<br>\n|;
}

@eqipumentの配列の要素を変数arg_$jで配列が終わるまで繰り返して入力画面を表示させます

その後
# デスク書き込み
open(OUT,">>$logfile") || &error("Write Error : $logfile");
$j = 0;
foreach(0..@eqipument) {
print OUT "$in{'arg_$j'}<>";
$j++;
}
close(OUT);

として書き込みをすると、変数arg_$jの内容が空になってしまい<>だけがかきこまれます
変数部分を arg_0,arg_1,arg_2.... と明示して書くときちんと入力画面で入力した
テキストが書きこめれますが、入力項目も多いですしプログラム的にも見難いので
繰り返し処理で書き込みをしたいのですがなぜこのような結果になるのか(arg_$jの内容が空になる)理解できません又

print qq|$in{'arg_$j'}\n|;として

変数の中身を検証するためにコンソールに出力すると中身は "" になっています
宜しく御教授お願いします。

投稿日時 - 2005-02-21 11:37:50

QNo.1229711

すぐに回答ほしいです

質問者が選んだベストアンサー

print OUT "$in{'arg_$j'}<>";

の部分を
print OUT qq|$in{"arg_$j"}<>|;

としたらどうでしょう?

投稿日時 - 2005-02-21 12:57:43

お礼

シオンさんどうもあるがとうございました
''を""に変えたら良い結果を得られました
私が変数の形の扱いを正確に理解できていなかった為起こったミスでした、勉強しなおします_(--)_

投稿日時 - 2005-02-21 13:24:47

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)