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

时间:2013-03-19 15:17:51

标签: 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"); }

2 个答案:

答案 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无法告知这不是故意的,因此不会出现错误或警告。