• ベストアンサー

perl の挙動について

$today = "2012"; my @file = qw( result_001_${today}.txt result_002_${today}.txt result_003_${today}.txt ); for(@file){ print ; } 例えば、こういったスクリプトがある場合、$todayが代入されることなく出力されます。 なぜか分かりますでしょうか?

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

qw は実質的に q + split だから.

参考URL:
http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators
shiki_05_0
質問者

お礼

とても参考になるHPの紹介ありがとうございます。 qwは単純に分割するだけと思っていたのですが、色々な使い方があることを初めて知りました!

その他の回答 (1)

回答No.1

代替コードとして $today = "2012"; my @file = qq{ result_001_${today}.txt result_002_${today}.txt result_003_${today}.txt }; for(@file){ print ; } ですと動きます。 おそらく q で挟んだものは シングルクォート、qqで挟んだものはダブルクォートで挟んだものと同じですが qwの場合は、単なる文字列として認識されるのではないかと考えられます。

shiki_05_0
質問者

お礼

回答いただきありがとうございます。 qwの意味を全く考えずに使っていましたが、意味があったのですね。 また、サンプルプログラムありがとうございます。 とても役に立ちました。

関連するQ&A