为什么$a
会变成一个数组引用?我没有向它中添加任何元素。
perl -MData::Dumper -e 'use strict; 1 for @$a; print Dumper $a'
$VAR1 = [];
为什么$a
会变成一个数组引用?我没有向它中添加任何元素。
perl -MData::Dumper -e 'use strict; 1 for @$a; print Dumper $a'
$VAR1 = [];
for
循环将@$a
的内容视为lvalues——可以分配的东西。请记住,for
将数组的内容别名为$_
。似乎在@$a
中查找可别名内容的行为足以引起自动生成,即使没有内容可别名。map {stuff} @$a;
grep {stuff} @$a;
a_subroutine( @$a);
$a和$b是Perl中的特殊变量(用于排序),并具有自己的特殊作用域。
perl -MData::Dumper -e 'use strict; 1 for @$c; print Dumper $c'
生成
Global symbol "$c" requires explicit package name at -e line 1.
Global symbol "$c" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
perldoc -f exists
和perldoc perlref
中有讨论(也可参见 http://perldoc.perl.org)。 - Ether