perl为什么不用use strict生成错误?

kdu*_*ubs 1 perl

我有以下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)

Rau*_*ess 5

根据perldoc,use strict vars如果变量未声明或完全限定,则会抛出错误.

@LDRATA::SUITES 是一个完全限定变量的示例.


yst*_*sth 5

正如其他人所说的那样,如果变量未声明或完全限定,则使用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没有任何方法可以告诉你这不是故意的,所以不会出现错误或警告.