• ベストアンサー

forの書き方

$pass1 = "abc"; $pass2 = "def"; $pass3 = "ghi"; for(my $i=1;$i<=3;$i++){ print "$pass$i"; print "<br>"; } 上記スクリプトで abc1 def2 ghi3 と表示させようと考えていますが、$pass1、$pass2、$pass3が読み込まれずに以下のように表示されてしまいます。$passと$iを連結?させるにはどうすればよろしいのでしょうか。 1 2 3

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

最初のprintを print ${'pass' . $i}; にしてみたらどうでしょうか?

MKNET
質問者

お礼

ご回答有難うございます。おかげ様で解決できました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Ka-Wa
  • ベストアンサー率46% (12/26)
回答No.1

配列使う必要がありますね。最初の設定のところは @pass = ("abc","def","ghi"); として、 print $pass[$i]; と修正すれば出力すればOKです。 なぜこうしなくてはいけないかというと、$pass1 と書いた場合でも末尾が数字を含めて一つの変数名の指定になりますので、変数名の一部だけを別の変数で可変にするようなことができないためです。 よって、MKNETさんの書かれた処理では$pass という変数と $iの二つの変数値を表示する処理と解釈され、$passは未設定(ヌル文字)となるため、$iの値だけが表示された結果となりました。

MKNET
質問者

お礼

ご回答ありがとうございました。詳しく解説もしてくださり、大変参考になりました。

すると、全ての回答が全文表示されます。

関連するQ&A