我的目的是比较三个文件中的 ID 对。每个 ID 对都与一个值相关联。如果我在两个文件中找到相同的 ID 对,我想复制相关值并打印 ID 对和最终分数。如果在所有三个文件中都找到了 ID 对,我想要相同的。否则(对于“单个 ID 对”,仅在一个文件中找到)我想打印 ID 对和值。一个特定点与每对中 ID 的顺序有关。每对的 ID 顺序可能因文件而异,在比较 ID 对时我需要记住这一点。我的文件如下所示:
ros.txt
a|b 1
d|c 2
f|t 3
g|i 4
exp.txt
a|b 1
c|d 2
e|f 3
g|h 4
phy.txt
b|a 1
d|c 2
f|e 3
g|p 4
到目前为止我所做的是:
#!/usr/bin/perl
use warnings;
use strict;
my %rosetta;
open (my $ROS, '<', 'ros.txt') or die "$!";
while (<$ROS>) {
my ($tmp_r,$vr)=split/\t/;
next if $vr =~/NA/;
my ($r1,$r2)=split/\|/,$tmp_r;
next if $r1 eq $r2;
my %expression;
open (my $EX, '<', 'exp.txt') or die "$!";
while (<$EX>) {
my ($tmp_e,$ve)=split/ /;
next if $ve =~/NA/;
my ($e1,$e2)=split/\|/,$tmp_e;
next if $e1 eq $e2;
my %phyloge;
open (my $PHY, '<', 'phy.txt') or die "$!"_;
while (<$PHY>) {
my ($tmp_p,$vp)=split/ /;
next if $vp =~/NA/;
my($p1,$p2)=split/\|/,$tmp_p;
next if $p1 eq $p2;
}
}
}
在这一点上,我无法继续,我需要一些建议来解决我的问题。我想要的输出是:
a|b 1
c|d 8
f|t 3
e|f 9
g|h 4
g|i 4
g|p 4
等待帮助!先感谢您