我想避免赋值运算符.=
从子例程修改用户输入。
避免这种情况的一种方法是在子例程中执行输入的副本。这是最好的方法吗?还有其他解决方案吗?
use PDL;use strict;
my $a=pdl(1);
f_0($a);print "$a\n";
f_1($a);print "$a\n";
sub f_0{
my($input)=@_;
my $x=$input->copy;
$x.=0;
}
sub f_1{
my($input)=@_;
$input.=0;
}
在我的情况下(perl 5.22.1),执行最后一个脚本打印1
两0
行。f_0
不会就地修改用户输入,而f_1
会。