Arrays Perl将一个元素推入另一个数组中的数组中
我有一个数组(我们称之为X),X包含数组。我想把一个元素(一个字符串)放入X内部的数组中。 我已经尝试搜索了很长一段时间,我发现所有的人都试图将数组推到其他数组中 我尝试了以下代码:Arrays Perl将一个元素推入另一个数组中的数组中,arrays,perl,Arrays,Perl,我有一个数组(我们称之为X),X包含数组。我想把一个元素(一个字符串)放入X内部的数组中。 我已经尝试搜索了很长一段时间,我发现所有的人都试图将数组推到其他数组中 我尝试了以下代码: push(@X[0],$element); 这给了我一个错误: 现在在perlscript.pl第30行禁止实验推送标量, 靠近“$element)” 我使用的是Perl5版本26。我认为这符合您的要求: push @{ $X[0] }, $element; 在Perl中,数组不能包含其他数组。要创建多维数据结
push(@X[0],$element);
这给了我一个错误:现在在perlscript.pl第30行禁止实验推送标量, 靠近“$element)”
我使用的是Perl5版本26。我认为这符合您的要求:
push @{ $X[0] }, $element;
在Perl中,数组不能包含其他数组。要创建多维数据结构,需要引用 考虑这个例子
use strict; use warnings;
use Data::Dumper;
my @inner = qw(a b c);
my @outer = (
\@inner, # reference to existing array
[100, 200, 300], # new anonymous array reference
);
print Dumper \@outer;
这张照片
$VAR1 = [
[
'a',
'b',
'c'
],
[
100,
200,
300
]
];
你的外部数组就是,一个数组。但其中的元素是对数组的引用。您可以引用现有数组,也可以创建新的匿名数组
在转储结构以进行调试时,请注意,Dumper
from也需要引用,因此我们对\
使用相同的表示法
现在,要通过@outer
内部的位置将元素添加到@internal
,需要将第一个元素取出@outer
。要做到这一点,sigil会发生变化,因此您将获得$outer[0]
。要将其传递给push
,我们需要将其转换为一个数组。这称为数组的解引用
push @{ $outer[0] }, 'd';
当我们再次Dumper
它时,我们得到
$VAR1 = [
[
'a',
'b',
'c',
'd'
],
[
100,
200,
300
]
];
因为第一个元素是对命名数组变量的引用,所以我们也可以直接对它进行操作
push @inner, 'e';
这将更改@outer
中第一个元素的值,因为这两个元素都引用了内存中的相同内容(请参见为什么称为引用?)
$VAR1 = [
[
'a',
'b',
'c',
'd',
'e'
],
[
100,
200,
300
]
];
第二个元素不能这样做,因为它一开始是匿名引用
push @{ $X[0] }, $element;
让我们看看你的警告 现在在perlscript.pl第30行“$element”附近禁止实验性推送标量 在Perl 5.20.0
中,推送引用,因为它没有按预期工作,并开始发出警告。在Perl 5.30.0和it中,使程序死亡
另请参见和。推送的语法为
push ARRAY, LIST
比如说,
push @a, $element;
无论何时出现变量名,都可以使用计算结果为引用的块替换该名称
push @{ $X[0] }, $element;
这就是你需要的。就像大家已经提到的,push@{$X[0]},$element代码>
既然您说您使用的是v5.26,那么也可以使用后缀解引用:
push$X[0]->@*,$element
如果要将元素推送到数组,请尝试以下操作:push(@X,$element)
@vinodk89:他想将$element
推到位于@X
索引0处的内部数组引用中