gpt4 book ai didi

arrays - Perl 通过 Push in 子例程修改引用数组

转载 作者:行者123 更新时间:2023-12-02 06:39:41 25 4
gpt4 key购买 nike

我想在子例程中修改一个数组。它作为第二个参数通过引用传递。它似乎没有被修改,因为当我返回时,数组的长度与原始值相同。

这是我所做的一个片段:

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
}

我是 Perl 新手,所以请告诉我我的操作是否正确。我阅读了类似问题的答案,但它仍然没有为我打印正确的值 (1)。我安装了最新版本的 Perl。

最佳答案

原始数组没有被修改,因为您在 readLine() 中将其复制到 @array 中。您需要做这样的事情,您根据实际引用而不只是副本进行操作:

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);
}

输出:

("bar", "bat", "baz")

关于arrays - Perl 通过 Push in 子例程修改引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com