症状:$c="foo";
抛出错误,$b="foo";
不抛出错误。
我的剧本实际上是3行。以下操作不产生错误或警告:
use strict;
$b = "foo";
print $b;
但如果我更改为以下内容,我会得到一个“需要显式包名”错误。
use strict;
$c = "foo";
print $c;
我知道use strict;
需要在使用之前声明变量,并且将$c = "foo";
更改为my $c = "foo";
确实可以防止错误,但这并不能解释差异。
有人能给我点光吗?我肯定错过了一些显而易见的东西。我在Windows 7 x64中运行草莓Perl v5.16.3。我在npp中编辑,并通过c:\strawberry> perl test.pl
从命令行执行脚本
2条答案
按热度按时间dly7yett1#
strict文档:
由于sort()对变量$a和$b的特殊使用,因此不进行此检查。
dw1jzc5e2#
一些全局变量,如
$_
,$a
,$b
,实际上是预先声明的。因此,$a
和$b
变量可以在sort
块中使用,而无需额外的声明,其中它们具有两项的值: