Я хотел бы сравнить значения из столбца (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