use strict; と $a と $b
前にもハマって,今回もまた足を取られたのでメモ。
昨日から以下のコードの結果に頭を悩ませていた。
#!/usr/bin/perl use strict; $a = 100; print "$a\n"; # <実行結果> # $ perl try.pl # 100 #
あれ!?
use strict; してるのに「Global symbol "$a" requires explicit package name 〜」っていう
警告メッセージが出ないぞ!?
以前にも同じ事で悩んでいて,解決した筈なんだけどなんだったけな???
今日やっと思い出しました。
変数 $a と $b は,ソートルーチンでも特別な意味があったよな。
だからわざわざ my でレキシカル変数として宣言しなくても警告が出ないのかな?
#!/usr/bin/perl use strict; $c = 100; print "$c\n"; # <実行結果> # $ perl try.pl # Global symbol "$c" requires explicit package name at try.pl line 4. # Global symbol "$c" requires explicit package name at try.pl line 5. # Execution of try.pl aborted due to compilation errors.
やっぱりそうでした。
同じ事で悩んで時間無駄にしてんじゃねーよオレ!