如何使子子程序参数成为readwrite

tej*_*jas 6 perl6

假设我有一个交换两个给定参数的子程序.它在逻辑上需要具有读写参数.

sub swap($l, $r)
{
   my $tmp = $l;
   $l=$r;
   $r=$tmp;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法分配给只读变量($ l)或值

我认为我不能\$param在perl5中尝试.

我想我应该尝试一下,:=但文档中没有提到任何有关函数参数的内容.

如何将参数作为对此子例程的引用传递,以便我可以更改其值?

Bra*_*ert 10

sub swap ( $l is rw, $r is rw ) {
   ($r,$l) = ($l,$r)
}
Run Code Online (Sandbox Code Playgroud)
my $a = 1;
my $b = 2;

swap $a, $b;

say $a; # 2;
Run Code Online (Sandbox Code Playgroud)
my @a[2] = 1,2;

swap |@a;

say @a; # [2 1]
Run Code Online (Sandbox Code Playgroud)

您也可以使用reverse您想要完成的任务.

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

($a,$b) .= reverse;

say $a; # 2
say $b; # 1
Run Code Online (Sandbox Code Playgroud)