我正在写一个Perl脚本,我需要比较两个文件。 例如: -
我有两个阵列
@array = {'1', '2',' 3', '5', '6'}
@array1 = {'1', '3', '7', '6'}
我希望@array
的值可以查看@array1
,如果第二个数组中存在该值,则应该打印匹配。
输出应如下所示:
1,Match
3,Match
7,Not Match
6.Match
答案 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正在使用构造哈希引用的{}
,并以相同的方式工作,但由于其中一个元素的元素数量不均匀,因此会出错。