Я читал, что Perl использует вызов по ссылке при выполнении подпрограмм. Я сделал простой фрагмент кода для проверки этого свойства, но он ведет себя так, как если бы perl вызывался по значению:
$x=50;
$y=70;
sub interchange {
($x1, $y1) = @_;
$z1 = $x1;
$x1 = $y1;
$y1 = $z1;
print "x1:$x1 y1:$y1\n";
}
&interchange ($x, $y);
print "x:$x y:$y\n";
Это дает следующий результат:
$ perl example.pl
x1:70 y1:50
x:50 y:70
Если бы аргументы обрабатывались методом вызова по ссылке, разве x не должен был бы равняться x1, а y равняться y1?
&
, если только вы знаете, почему вы хотите это сделать и должны это сделать. Чем раньше вы это сделаете, тем счастливее вы будете. :) - person pilcrow   schedule 05.06.2014