2010-06-14 134 views
0

有人可以在Perl中提供一个很好的/好的解决方案,用于比较两个数组(a和b),它们检查数组a中的每个元素是否在数组b中找到(并且只在数组b中找到一次)?在Perl中比较2个数组

回答

1

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

#!/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";