Kim*_*aru 1 arrays perl pass-by-reference
我有一个我想在子程序中修改的数组.它作为第二个参数通过引用传入.它似乎没有被修改,因为当我返回时,数组的长度与原始值相同.
这是我所做的一小部分:
sub readLine
{
my @array = @{$_[1]};
#Push value onto array
push @array, $myvalue;
}
sub main
{
my @array = ();
#Pass by reference
readLine($argument1, \@array);
print @array; #Prints 0
}
Run Code Online (Sandbox Code Playgroud)
我是Perl的新手,所以如果我正确地做这件事,请告诉我.我读了类似问题的答案,但仍然没有为我打印正确的值(1).我安装了最新版本的Perl.
原来的阵列中,无法修改,因为你正在做它的副本到@array在readLine().你需要做这样的事情,你在实际的参考而不仅仅是一个副本:
use strict;
use warnings;
use Data::Dump;
main();
sub main {
my @array;
foo(\@array, 'bar', 'bat', 'baz');
dd(@array);
}
sub foo {
my ($aref, @args) = @_;
push(@$aref, @args);
}
Run Code Online (Sandbox Code Playgroud)
输出:
("bar", "bat", "baz")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |