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

解決済みの質問

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

投稿日時 - 2006-11-21 01:24:10

QNo.2552472

すぐに回答ほしいです

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

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

投稿日時 - 2006-11-21 01:33:20

お礼

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

投稿日時 - 2006-11-21 03:10:30

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

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

回答(2)

ANo.1

配列使う必要がありますね。最初の設定のところは
@pass = ("abc","def","ghi");

として、
print $pass[$i];

と修正すれば出力すればOKです。
なぜこうしなくてはいけないかというと、$pass1 と書いた場合でも末尾が数字を含めて一つの変数名の指定になりますので、変数名の一部だけを別の変数で可変にするようなことができないためです。

よって、MKNETさんの書かれた処理では$pass という変数と $iの二つの変数値を表示する処理と解釈され、$passは未設定(ヌル文字)となるため、$iの値だけが表示された結果となりました。

投稿日時 - 2006-11-21 01:32:11

お礼

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

投稿日時 - 2006-11-21 03:09:58

あなたにオススメの質問