単語リストをクォートする
[Perlop の翻訳です]
qw//
は、ホワイトスペースを単語の区切りとして使って STRING から抽出した単語リストを評価します。
これは、おおむね次のコードと同じと理解できます:
split(" ", q/STRING/);
STRING が ASCII のホワイトスペースで分離するという違いは、コンパイル時に実際のリストを生成します。 そして、スカラーコンテキストでは、リストの最後の要素を返します。そのため、この式は:
qw(foo bar baz)
意味的には次のリストと同等です:
"foo", "bar", "baz"
次のような使い方をよく見かけます:
use POSIX qw( setlocale localeconv )
@EXPORT = qw( foo bar baz );
カンマで単語を分割しようとしたり、複数行の qw
文字列にコメントを入れたりするミスが良くあります。
このような理由から、use warnings
プラグマと -w スイッチ(つまり $^W
変数)は、
STRING に ","
や "#"
文字が含まれていると警告を生成します。