如何在perl中结合包含数组引用的两个数组引用?

时间:2017-07-20 22:05:06

标签: arrays perl reference

假设我有一个类似于 -

的数组引用
my $arrayref1 = [[1,2], [3,4], [5,6]];

并且,我有另一个数组引用 -

my $arrayref2 = [[1,2], [3,4], [7,8]];

我如何实现这样的目标 -

push @{$arrayref1}, @{$arrayref2};

这样arrayref1将如下所示(不包括包含公共元素的数组引用) -

$arrayref2 = [[1,2], [3,4], [5,6], [7,8]];

2 个答案:

答案 0 :(得分:3)

使用散列哈希来表示联合的现有元素:

navigator.addView(String, Class<View>)

答案 1 :(得分:3)

这将按照您的要求进行

use strict;
use warnings 'all';

my $arrayref1 = [[1,2], [3,4], [5,6]];
my $arrayref2 = [[1,2], [3,4], [7,8]];

my $result = meld($arrayref1, $arrayref2);

print join (', ', map { sprintf "[%d,%d]", @$_ } @$arrayref1), "\n";

sub meld {
    my ($a1, $a2) = @_;
    my %uniq;

    $uniq{"@$_"} = 1 for @$a1;

    for ( @$a2 ) {
        my $key = "@$_";
        next if $uniq{$key}++;
        push @$a1, [ @$_ ];
    }

    $a1;
}

输出

[1,2], [3,4], [5,6], [7,8]