在perl中组合2个引用的数组

时间:2014-11-06 06:03:50

标签: arrays perl pass-by-reference

您好我有函数返回对数组的引用,如下所示:

sub get_values{
.
.
.
return(\@array)
}

我把它复制到另一个数组中:

@my_val = &get_values(...);

这个的Dumper输出类似于:

$VAR1 = [ '1','2',...]

现在我需要结合其中的两个,但是当我这样做时

@combined = (@my_val,@my_val_2);

我得到了

$VAR1 = [ '1','2',...]
$VAR2 = [ '11','22',...]

我需要将它组合成一个元素,如:

$VAR1 = [ '1','2',...,'11','22',...]

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您正在将数组引用存储到数组中,并且您不会取消引用该数组。修复将把它存储到标量并取消引用它们。

$my_val = get_values(...);

$my_val_2 = get_values(...);

@combined = (@$my_val, @$my_val_2);

自定义示例

$my_val = [1,2,3];

my $my_val_2 = [4,5,6];

my @combined = (@$my_val, @$my_val_2); # dereference the array and they get flattened automatically

print "@combined"; # 1 2 3 4 5 6

答案 1 :(得分:1)

如果您的函数正在返回引用,请准备将其作为引用,通过取消引用返回值,

my @my_val = @{ get_values(...) };
..
my @combined = (@my_val, @my_val_2);

或将引用存储到普通标量中,

my $aref = get_values(...);
..
my @combined = (@$aref, @$aref2);