次のperlコードがあります。私は -w を使用しており、strict を使用しています。@LDRATA::SUITES がエラーを生成しないのはなぜですか? $x は ?
#!/grid/common/bin/perl -w
use strict;
for (@LDRATA::SUITES) { print("one\n"); }
for ($LDRATA::SUITES[0]) { print("two\n"); }
for($x) { print("three\n"); }
次のperlコードがあります。私は -w を使用しており、strict を使用しています。@LDRATA::SUITES がエラーを生成しないのはなぜですか? $x は ?
#!/grid/common/bin/perl -w
use strict;
for (@LDRATA::SUITES) { print("one\n"); }
for ($LDRATA::SUITES[0]) { print("two\n"); }
for($x) { print("three\n"); }
perldoc によるとuse strict vars
、変数が宣言されていないか完全修飾されていない場合、エラーがスローされます。
@LDRATA::SUITES
完全修飾変数の例です。
他の人が言ったように、変数が宣言されていないか完全修飾されていない場合、厳密な変数を使用するとエラーがスローされます。ここでは完全に修飾されています。
間違ったパッケージ名を 1 か所だけ指定すると、警告が表示されます (strict からではありませんが)。
$ perl -w
use strict;
for (@LDRATA::SUITES) { print("one\n"); }
__END__
Name "LDRATA::SUITES" used only once: possible typo at - line 3.
複数の場所で指定した場合、perl にはそれが意図的ではないことを伝える方法がないため、エラーや警告は発生しません。