Arrays 比较perl中的两个文件
我正在编写一个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;
@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
。但在所有程序中都应该使用严格的和警告,尤其是当你在这里写答案供其他人稍后查找时。毕竟,我们希望这些人能够正确地学习@辛巴布:你说得对!谢谢你的回复!请随便回答。如果你愿意,你可以在回答中使用我的评论。