1

我有以下 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"); }
4

2 回答 2

5

根据 perldoc,use strict vars如果变量未声明或完全限定,将引发错误。

@LDRATA::SUITES是完全限定变量的示例。

于 2013-03-19T15:23:09.923 回答
5

正如其他人所说,如果变量未声明或完全限定,则 use 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 没有任何方法可以判断这不是故意的,因此不会出现错误或警告。

于 2013-03-19T16:04:20.980 回答