• ベストアンサー

名前に変数を入れたい

print "$in{'name_1'}"; print "$in{'name_2'}"; print "$in{'name_3'}"; 上記の名前の部分に変数を入れて下記のようにしたいのですが、方法がわかりません。 for(1..3) { $i++; print "$in{'name_$i'}"; } また、フォームから送信されてくる名前=$in{'name'} の読み名がわからないのですが、これは変数とは違いますか?どのように呼ぶものなのでしょうか? 説明下手で申し訳ないのですが、宜しくお願いいたします。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

> フォームから送信されてくる名前=$in{'name'} の読み名がわからない 連想配列(ハッシュ)変数です。 $in{'name_1'} は、「ハッシュ変数 %in の、キー'name_1'の値」です。 このキー(添字)部分をperl のコードとして変数を元に生成すればいいだけです。質問者さんのコードでは、$in{'name_$i'} となっていますが、 シングルクオート(')で囲まれた中身は「文字列」で、変数展開されませんから、そのままの「name_$i」というキーでの参照になっています。 これを、 'name_'.$i とすれば、「name_」という文字列と、変数$i を連結(演算子 . )したものである、「name_1」などをキーとして参照できます。 あと、for でループしているなら、現在値は $_ で参照できますから、変数$iを使わなくてもいいので、まとめると ---ここから--- foreach (1..3) { print "$in{'name_'.$_}"; } ---ここまで--- となります。

cocolink
質問者

お礼

大変分かりやすくご説明してくださり誠に有難うございました。

関連するQ&A