我对 Perllocal
语法有疑问。
代码如下:
#!/usr/bin/perl -w
&outer;
sub outer {
local $lvar = 'local';
&inner;
}
sub inner {
print "lvar: $lvar\n";
}
如果我运行代码,它会输出:
lvar: local
但是如果代码修改如下:
#!/usr/bin/perl -w
use strict;
&outer;
sub outer {
local $lvar = 'local';
&inner;
}
sub inner {
print "lvar: $lvar\n";
}
然后,出现错误:
Global symbol "$lvar" requires explicit package name at ./test.pl line 7.
Global symbol "$lvar" requires explicit package name at ./test.pl line 12.
Execution of ./test.pl aborted due to compilation errors.
我在这里很困惑。我想最小化 的范围$lvar
,并且我也想使用strict
指令。但似乎它们不能共存。
可以use strict;
和local
共存吗?或者,我应该说明our $lvar
吗?