Бих искал да сравня стойностите от колона (col1) в един файл (file1) с всички записи от колона (col1) в друг файл (file2). Стратегията ми беше да чета файлове за всеки ред във файла, разделен с разделител и да сравня стойностите в две колони. Ако има съвпадение, отпечатайте определената стойност от колоната във втория файл и я добавете към последната колона на първия файл, в противен случай отпечатайте „не е намерено“ и я добавете към последната колона на първия файл. Мисля, че следващият ми скрипт сравнява ред с ред вместо ред с всички редове в полето и връща грешки (Използване на неинициализирана стойност $col1[0]...). Любезната ви помощ ще бъде оценена.
open (FILE1, "<", "file1") or die ("Can't open file $!");
open (FILE2, "<", "file2") or die ("Can't open file $!");
my @data1 = <FILE1>;
my @data2 = <FILE2>;
foreach my $curr_line_1 ( @data1 ) {
my @col1 = split "\t", $curr_line_1;
}
foreach my $curr_line_2 ( @data2 ) {
my @col2 = split "\t", $curr_line_2;
}
if ("$col1[0]" eq "$col2[0]") {
open FINAL, '>>', 'final';
push(@col1, "$col2[1]");
print FINAL "@col1\n";
}
else {
open FINAL, '>>', 'final';
push(@col1, "not found");
print FINAL "@col1\n";
}
close(FINAL);
close(FILE1);
close(FILE2);
file1
1 mary
1 tom
2 john
3 will
4 hugh
5 eddy
file2
2 unit2
3 unitA
5 base
final
1 mary not found
1 tom not found
2 john unit2
3 will unitA
4 hugh not found
5 eddy base