在Perl中比较2个数组

在Perl中比较2个数组,perl,Perl,有人能用Perl提供一个很好的解决方案来比较2个数组a和b,检查数组a上的每个元素是否在数组b中找到,并且在数组b中只找到一次吗?请参见: 您是否关心和项目是否为不在a中的b?按照你的措辞,b可以比a有更多的项目。此外,还需要指定在数组中复制项时发生的情况。下面是一些代码,用于查找b中a中的每个项目是否至少有一个: #!/usr/bin/perl use strict; use warnings; sub all_in_second { my ($first, $second) =

有人能用Perl提供一个很好的解决方案来比较2个数组a和b,检查数组a上的每个元素是否在数组b中找到,并且在数组b中只找到一次吗?

请参见:


您是否关心和项目是否为不在a中的b?按照你的措辞,b可以比a有更多的项目。此外,还需要指定在数组中复制项时发生的情况。下面是一些代码,用于查找b中a中的每个项目是否至少有一个:

#!/usr/bin/perl

use strict;
use warnings;

sub all_in_second {
    my ($first, $second) = @_;
    my %in_second        = map { $_ => 1 } @$second;

    for my $item (@$first) {
        return 0 unless $in_second{$item};
    }
    return 1;
}

my @a = (1, 2, 3, 3, 4);
my @b = (1, 2, 3, 4, 5);

print all_in_second(\(@a, @b)) ? "true" : "false", "\n";

@a = (1, 2, 3, 3, 6);
@b = (1, 2, 3, 4, 5);

print all_in_second(\(@a, @b)) ? "true" : "false", "\n";