Как сделать параметр подпрограммы make как readwrite

Предположим, у меня есть подпрограмма, которая меняет два заданных параметра. Он логически должен иметь параметры read write.

sub swap($l, $r)
{
   my $tmp = $l;
   $l=$r;
   $r=$tmp;
}

Я получаю сообщение об ошибке:

невозможно назначить переменной только для чтения ($l) или значение

Я не думаю, что можно попробовать $param как в perl5.

Я думаю, что я должен попробовать что-то с := но в документации ничего не говорится о параметрах функции.

как мне пройти параметр как ссылка на эту подпрограмму, чтобы я мог изменить ее значение?

1 ответов


sub swap ( $l is rw, $r is rw ) {
   ($r,$l) = ($l,$r)
}
my $a = 1;
my $b = 2;

swap $a, $b;

say $a; # 2;
my @a[2] = 1,2;

swap |@a;

say @a; # [2 1]

можно использовать reverse а также за то, что вы пытаетесь выполнить.

my $a = 1;
my $b = 2;

($a,$b) .= reverse;

say $a; # 2
say $b; # 1