1

次の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"); }
4

2 に答える 2

5

perldoc によるとuse strict vars、変数が宣言されていないか完全修飾されていない場合、エラーがスローされます。

@LDRATA::SUITES完全修飾変数の例です。

于 2013-03-19T15:23:09.923 に答える
5

他の人が言ったように、変数が宣言されていないか完全修飾されていない場合、厳密な変数を使用するとエラーがスローされます。ここでは完全に修飾されています。

間違ったパッケージ名を 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 にはそれが意図的ではないことを伝える方法がないため、エラーや警告は発生しません。

于 2013-03-19T16:04:20.980 に答える