• ベストアンサー

use strictが効かない (PERL)

たびたびお世話になっております。 PERL version 5.14.2 をWindows 7 のコマンドプロンプトから起動して使っています。 use strict; と一行目に書くと 宣言されていない変数があれば拒絶されるとのことで #!/usr/bin/perl use strict; use warnings; $a = 10; print "$a\n"; というスクリプトを書きました。が、すんなり動いてしまいます。 use strict; は どうすればうまく効くのでしょうか。 ご指導お願いします。

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

  • ベストアンサー
回答No.1

$aと$bは定義済みの変数であるため、my宣言せずにuse strictしていてもエラーになりません。 perlのわかりづらいところでもあります。 http://perldoc.jp/docs/perl/5.14.1/perlvar.pod --- $a $b sort() を使うときの特殊パッケージ変数です; "sort" in perlfunc を 参照してください。 この特殊性により、$a と $b は、たとえ strict 'vars' プラグマを 使っているときでも (use vars や our() を使って) 宣言する必要が ありません。 これを sort() 比較ブロックや関数で使えるようにしたい場合は、 my $a や my $b としてレキシカル化しないでください。

ng999
質問者

お礼

あ、そういうことでしたか。。 助かりました。 ありがとうございます。

関連するQ&A