您好我有函数返回对数组的引用,如下所示:
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',...]
我该怎么做?
答案 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);