Я бы хотел избежать оператора присваивания .=
для изменения пользовательского ввода из подпрограммы.
Один из способов избежать этого - выполнить копию ввода внутри подпрограммы. Это лучший способ продолжить? Есть ли другие решения?
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
делает.