я довольно долго не программирую на Perl, и мне нужно немного нажать кнопку.
Мне нужно сравнить два списка, чтобы сохранить только те строки, которые не совпадают.
мой первый файл выглядит следующим образом:
1 pf1 er2 0,4
2 pf1 er3 0,56
3 pf1 er6 0,72365
4 er3 pf3 0,263
5 pf5 er2 0,28473
Второй файл выглядит так:
pf1 er2
pf1 er3
er2 pf1
er3 pf1
И я хотел бы получить вывод:
3 pf1 er6 0,72365
4 er3 pf3 0,263
5 pf5 er2 0,28473
Раньше я делал это с помощью grep -Fvf second_file.txt first-file.txt > output.txt
Теперь мне нужно выполнить то же самое в Perl, но я не могу организовать код.
open(HAN, "< $file_1") || die "Impossibile aprire il file $file_1";
@r = <HAN>;
close(HAN);
open(RES, "< $file_2") || die "Impossibile aprire il file $file_2";
@c = <RES>;
close(RES);
for ($i=0; $i<=$#r; $i++){
($num, $id1, $id2, $v) = split (/\t/, $r[$i], 4);
$ppi1 = $id1."\t".$id2;
for($t=0; $t<=$#c; $t++){
($iid1, $iid2) = split (/ /, $c[$t]);
$orto1 = $iid1."\t".$iid2;
$orto2 = $iid2."\t".$iid1;
if( ($ppi1 ne $orto1) || ($ppi1 ne $orto2) ){
print "$ppi1\n";
}
}
}
Любое предложениеочень добро пожаловать!