比较perl中的两个文件

时间:2018-03-27 13:02:17

标签: arrays perl automation

我正在写一个Perl脚本,我需要比较两个文件。 例如: -

我有两个阵列

@array  = {'1', '2',' 3', '5', '6'}
@array1 = {'1', '3', '7', '6'}

我希望@array的值可以查看@array1,如果第二个数组中存在该值,则应该打印匹配。

输出应如下所示:

1,Match

3,Match

7,Not Match

6.Match

1 个答案:

答案 0 :(得分:1)

代码可能如下所示:

#!/usr/bin/perl

use strict;
use warnings;

my @array = ('1','2','3','5','6');
my @array2 = ('1', '3', '7', '6');

for my $item(@array2)
{
    if (grep($_ == $item, @array) > 0)
    {
         print "$item, Match\n";
    }
    else
    {
        print "$item, Not Match\n";
    }
}

输出

1, Match
3, Match
7, Not Match
6, Match

PS:来自@simbabque的评论引用

  

@ sigil告诉Perl变量是一个数组。 ()是列表构造函数,在列表上下文中,列表将分配给数组。 []构造一个数组引用,它在列表上下文中将被视为单元素列表,因此如果将其分配给数组,最终将得到一个像@foo = ( [ 1, 2, 3 ] )这样的单元素数组。 OP正在使用构造哈希引用的{},并以相同的方式工作,但由于其中一个元素的元素数量不均匀,因此会出错。