gpt4 book ai didi

arrays - 无法解决的 perl 错误?

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

use strict;
my @array = ();
my @nums = [3, 4];
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
$nums[0] = 4+1;
push @{ $array[$i] }, @nums;
}
}
print $array[6][2][0]. "\n";

如果他们运行代码,就会发现这运行不正常。但是,如果您注释掉“$nums[0] = 4+1;”这一行,它运行良好。到底是怎么回事?只能将不可变数组推送到其他数组吗?

最佳答案

@nums 是一个数组,您分配给一个数组引用(使用方括号 [])。因此,将其更改为适当的数组声明:my @nums = (3, 4);

use strict;
use Data::Dump;

my @array = ();
my @nums = (3, 4);
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
$nums[0] = 4+1;
push @{ $array[$i] }, @nums;
}
}

dd @array;

#-- output:
(
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
[5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4],
)

关于arrays - 无法解决的 perl 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15827901/

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