単純なことで困っています。2 つのファイルを比較して、2 つのファイル間で一致しないパターンのみを書き込む必要があります。
私の最初のファイルは次のようになります。
1 A A
2 A B
3 C D
4 E F
5 G H
6 I L
2 番目のファイルは次のようになります。
A A
A B
C D
私が望むのは、2 番目のファイルのペア リストを使用して、最初のファイルの一致しない行を選択し、それらを出力に出力することです。私の望ましい出力は次のようになります。
4 E F
5 G H
6 I L
以下の私のコードは改善が必要であり、それを行うにはあなたの助けが必要です!
open (FUS, "< $file_1")|| die "Impossible open file 1";
@f = <FUS>;
close (FUS);
open (ALL, "< $file_2")|| die "Impossible open file 2";
@a = <ALL>;
close (ALL);
for ($c=0; $c<=$#a; $c++) {
chomp ($a[$c]);
@q = split (/\t/, $a[$c]);
$qok = $q[0]."\t".$q[1];
$qko = $q[1]."\t".$q[0];
for ($t=0; $t<=$#f; $t++) {
chomp ($f[$t]);
($id, $pf1, $pf2) = split (/\t/, $f[$t]);
$pf_12 = $pf1."\t".$pf2;
$pf_21 = $pf2."\t".$pf1;
if ((($qok ne $pf_12) && ($qko ne $pf_12)) || (($qok ne $pf_21) && ($ko ne $pf_21))){
print "$id\t$pf1\t$pf2\n";
}
}
}
このコードの問題は、ループにあるため、目的の結果ではなく間違った結果が得られることです。
どんな提案でも大歓迎です!