我试图弄清楚Perl子程序及其工作原理.从perlsub我知道子例程是按引用调用的,并且需要一个赋值(例如my(@copy) = @_;
)来将它们转换为按值调用.
在下文中,我看到它change
被引用称为"a"和"b"变为"x"和"y".但我很困惑为什么数组没有用额外的元素"z"扩展?
use strict;
use Data::Dumper;
my @a = ( "a" ,"b" );
change(@a);
print Dumper(\@a);
sub change
{
@_[0] = "x";
@_[1] = "y";
@_[2] = "z";
}
Run Code Online (Sandbox Code Playgroud)
输出:
$VAR1 = [
'x',
'y'
];
Run Code Online (Sandbox Code Playgroud)
在下面,我传递哈希而不是数组.为什么键不能从"a"变为"x"?
use strict;
use Data::Dumper;
my %a = ( "a" => "b" );
change(%a);
print Dumper(\%a);
sub change
{
@_[0] = "x";
@_[1] = "y";
}
Run Code Online (Sandbox Code Playgroud)
输出:
$VAR1 = {
'a' => 'y'
};
Run Code Online (Sandbox Code Playgroud)
我知道真正的 …
perl ×1