У меня есть 2 CSV и текстовые файлы, файл 1 имеет 2 столбца, один с идентификатором гена и два с именем гена, файл 2 имеет много столбцов, причем часть строки в столбцах является идентификатором гена, например, идентификатор гена (генома) или псевдогенаидентификатор (геном).я хочу сравнить каждый идентификатор гена в файле 1 с каждым идентификатором гена в файле 2 и заменить идентификатор гена в файле 2 именем гена в файле 1, печатая в файле 3.
файл 1;
SPAR5_0024, coA binding domain protein
SPAR5_0025, hypothetical protein
SPAR5_0026, hypothetical protein
файл 2;
SPAR5_0024(72.AFAX01.1.gb) SPAR5_0026(72.AFAX01.1.gbff) SPAR5_0025(72.AFAX01.1.gbff)
желаемый вывод (файл 3);
coA binding domain protein(72.AFAX01.1.gb) hypothetical protein(72.AFAX01.1.gbff) hypothetical protein(72.AFAX01.1.gbff)
с моим кодом получаю пустой файл 3
Эточто запущено;
#!/usr/local/bin/perl -w
use strict;
use warnings;
my $file1 = "annot.txt";
my $file2 = "orthomcl.csv";
my $file3 = "combi.csv";
open (FILE1,"$file1") || die;
open (FILE2,"$file2") || die;
open (FILE3,">$file3") || die;
my @file1 = <FILE1>;
my @file2 = <FILE2>;
my %file1;
while ( my $value = <FILE1> ) {
chomp $value;
my @file1 = split /\s+/, $_;
$file1{$value} = 1;
}
my %file2;
while (my $value = <FILE2>) {
chomp $value;
my @file2 = split /\s+/, $_;
if ( $file1{ $value } ) {
$file2 = $file1{ $file2 };
print join( "\t" => @file2 ), $/;
}
}
close (FILE1);
close (FILE2);
close (FILE3);
желаемый вывод (файл 3)
coA binding domain protein(72.AFAX01.1.gb) hypothetical protein(72.AFAX01.1.gbff) hypothetical protein(72.AFAX01.1.gbff)