我是 Perl 世界的新手,我有一个比较两个数组的脚本。
我使用List::MoreUtils
( each_arrayref
) 进行比较。
我有两个问题:
1)有没有办法比较两个数组块(如natatime,但对于两个arrayrefs),而不是像在each_arrayref中那样一次比较单个元素?
元素应该来自每个数组的相同索引。
数据结构是这样的:
{
atr => [qw/ a b c d /],
ats => [qw/ a b c d /],
att => [qw/ a b c d /],
}
这就是我到目前为止所得到的。
my @lists = keys %{$hash};
for (my $i = 0; $i <= @lists; $i++) {
my $list_one = $lists[$i];
my $one = $hash->{$list_one};
for (my $j = 0 ; $j <= @lists ; $j++) {
my $list_two = $lists[$j];
my $two = $hash->{$list_two};
my ($overlapping, $mismatch, $identity);
my $match = 0;
my $non_match = 0;
my $count_ac_calls = 0;
my $each_array = each_arrayref($one, $two);
while (my ($call_one, $call_two) = $each_array->()) {
if ((defined $call_one) && (defined $call_two)) {
if ($call_one eq $call_two) {
$match++;
}
if ($call_one ne $call_two) {
$non_match++;
}
}
} #end of while loop $each_array->()
print "$list_one,$list_two,$match,$non_match";
} #end of for j loop
} #end of for i loop
我想比较 atr->ats、atr->att、ats->att。但是使用我当前的代码,我会重复进行比较,例如 ats->atr att->atr,att->ats。
2)我怎样才能避免这些?