我有以下perl代码.我正在使用-w并使用严格.为什么@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"); }
Run Code Online (Sandbox Code Playgroud)
正如其他人所说的那样,如果变量未声明或完全限定,则使用strict vars会抛出错误.这里完全合格.
如果您只在一个地方提供错误的包名称,您将收到警告(尽管不是严格的):
$ perl -w
use strict;
for (@LDRATA::SUITES) { print("one\n"); }
__END__
Name "LDRATA::SUITES" used only once: possible typo at - line 3.
Run Code Online (Sandbox Code Playgroud)
如果你在多个地方给它,perl没有任何方法可以告诉你这不是故意的,所以不会出现错误或警告.