我有以下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"); }
答案 0 :(得分:5)
根据perldoc,如果未声明变量或完全限定,use strict vars
将抛出错误。
@LDRATA::SUITES
是完全限定变量的示例。
答案 1 :(得分: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.
如果您在多个地方提供,perl无法告知这不是故意的,因此不会出现错误或警告。