Arrays perl中两种数组的比较

Arrays perl中两种数组的比较,arrays,perl,comparison,Arrays,Perl,Comparison,我试图比较两个数组的内容,我需要最终输出为“匹配”或“不匹配” 我已经编写了下面的代码,它给出了预期的输出。但是,有人能给我推荐其他简单的方法吗 #!/usr/bin/perl use strict; use warnings; #Numeric scalar my @array_1= (10,20,40,19); my @array_2= (10,30,23,19); print "@array_1\n"; my $count=0; while ($count <

我试图比较两个数组的内容,我需要最终输出为“匹配”或“不匹配” 我已经编写了下面的代码,它给出了预期的输出。但是,有人能给我推荐其他简单的方法吗

#!/usr/bin/perl
use strict;
use warnings;
 #Numeric scalar

my @array_1= (10,20,40,19);
my @array_2= (10,30,23,19);

print "@array_1\n";
my $count=0;
while ($count < scalar @array_1){
   for (@array_2) {
       if ($array_1[$count] == $array_2[$count]) {
        print "matched\n";
        $count++;} 
    else {
        print "Not matched\n";
        $count++;
        }
    }
    } 
#/usr/bin/perl
严格使用;
使用警告;
#数值标量
my@array_1=(10,20,40,19);
my@array_2=(10,30,23,19);
打印“@array_1\n”;
我的$count=0;
而($count
很容易先写下所有不匹配的条件,然后在最后显示为匹配项

#!/usr/bin/perl
use strict;
use warnings;

my @array_1 = (10,20,40,19);
my @array_2 = (10,30,23,19);

if (scalar @array_1 != scalar @array_2) {
  print "Not matched\n";
  exit 0;
}

while (my ($index, $elem) = each @array_1) {
  if ($elem != $array_2[$index]) {
    print "Not matched\n";
    exit 0;
  }
}

print "matched\n";

上述解决方案是好的。也可以使用模块

Array::Compare-用于比较数组的Perl扩展。如果您有两个数组,并且想知道它们是相同的还是不同的,那么Array::Compare将对您有用。 所有比较都是通过比较器对象进行的

输出


你的解决方案看起来很简单,非常感谢Shingo
if(scalar@array\u 1!=scalar@array\u 2){
可以是
if(@array\u 1!=@array\u 2){
如果您只需要知道它们是否匹配,您可能想看看这是编写自己的算法的练习还是家庭作业,您使用的是一种非常常见的方法-迭代并以“不匹配”失败当你发现一个不匹配项,如果你没有匹配项就完成了整件事,那么就求助于“匹配”——但是你打印的太多了。
use strict;
use warnings;
use Array::Compare;

my @array_1= (10,20,40,19);
my @array_2= (10,30,23,19,66);

my $comp = Array::Compare->new;

if ($comp->compare(\@array_1, \@array_2)) {
  print "Arrays are the same (Matched)\n";
} else {
  print "Arrays are different (Not Matched)\n";
}
Arrays are different (Not Matched)