Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 比较perl中的两个文件_Arrays_Perl_Automation - Fatal编程技术网

Arrays 比较perl中的两个文件

Arrays 比较perl中的两个文件,arrays,perl,automation,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 代码可能如下所示: #!/usr/bin/perl use strict; use warnings;

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

我有两个数组

@array  = {'1', '2',' 3', '5', '6'}
@array1 = {'1', '3', '7', '6'}
我希望
@array
的值可以查看
@array1
,如果该值出现在第二个数组中,它应该打印匹配

输出应如下所示:

1,Match

3,Match

7,Not Match

6.Match

代码可能如下所示:

#!/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
注:引用@simbabque的评论

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


“diff”shell命令是否满足您的要求?使用您向我们展示的代码,您会生成
@array
的语法错误和一个包含
@array1
哈希引用的单元素数组。
()
[]
都不能定义数组。
@
符号告诉Perl变量是数组。
()
是列表构造函数,在列表上下文中,列表将被分配给数组
[]
构造一个数组引用,在列表上下文中,该数组引用将被视为一个单元素列表,因此,如果将其分配给数组,则最终将得到一个单元素数组,如
@foo=([1,2,3])
。OP使用的是
{}
,它构造了一个散列引用,工作方式相同,但由于其中一个元素的数量不均匀,它将出错。不过,您的方法很好,但比较运算符错误。因为它只是数字,所以使用
=
而不是
eq
。但在所有程序中都应该使用严格的和警告,尤其是当你在这里写答案供其他人稍后查找时。毕竟,我们希望这些人能够正确地学习@辛巴布:你说得对!谢谢你的回复!请随便回答。如果你愿意,你可以在回答中使用我的评论。