Я новичок в perl и считаю, что это трудно справиться с ситуацией ниже и концепцией хэша в perl. Я нашел некоторые материалы для работы с этим сценарием, но не имеет Text: CSV-модуль.Perl hash: печать колонок файлов на основе ключа другого файла
#/usr/bin/perl -w
use strict;
use warning;
use Data::Dumper;
my $INFILE_01 = "FILE_01.txt";
my $INFILE_02 = "FILE_02.txt";
open INFILE02, "< $INFILE_02" or die "$0 : Failed to open input file $INFILE_02 : $! \n";
# Format of INFILE02 - Tab Delimited
DEVELOMENT_TEST BUGID_TS57 TestID DEVELOMENT_UAT BUGID_TS57 TestID DEVELOMENT_PROD BUGID_TS57 TestID DEVELOMENT_REG BUGID_TS57 TestID DEVELOMENT_TEST BUGID_TS57 TestID DEVELOMENT_TEST BUGID_TS57 TestID DEVELOMENT_UAT BUGID_TS57 TestID
my %INFILE02;
while (my $line = <INFILE02>) {
# Skipping if the line is empty or a comment
next if ($line =~ /^\s*$/);
next if ($line =~ /^#\s*/);
chomo $line;
if ($line = ~ /MOBILE_DEV/) {
my ($colum1, $column2, undef) = split /\t/, $line;
$INFILE02{$colum1} = $colum2;
}
}
close $INFILE02 or die "$0 : Failed to close input file $INFILE02 : $! \n";
print Dumper \%INFILE02;
# Output of %INFILE02
$VAR1 = {
'DEVELOMENT_TEST' => 'BUGID_TS57',
'DEVELOMENT_UAT' => 'BUGID_TS57',
'DEVELOMENT_PROD' => 'BUGID_TS57',
'DEVELOMENT_REG' => 'BUGID_TS57'
}
Теперь сверху хэш-вывода INFILE02 мне нужно, чтобы соответствовать ключи DEVELOMENT_TEST, DEVELOMENT_UAT, DEVELOMENT_PROD, DEVELOMENT_REG Файл INFILE01 на каждой строке по одному.
для Ex, если ключ DEVELOMENT_TEST присутствует в любой строке INFILE01, затем распечатайте столбец 1, столбец 3 INFILE01 и все столбцы INFILE02 в выходном файле.
Мне нужно повторить это для всех ключей% INFILE02.
#Format of INFILE001 - Tab Delimited 119736 PRODUCTTESTING DEVELOMENT_TEST 448094 PRODUCTTESTING DEVELOMENT_TEST 206893 PRODUCTTESTING DEVELOMENT_TEST 333743 PRODUCTTESTING DEVELOMENT_TEST 172534 PRODUCTTESTING DEVELOMENT_PROD 785275 PRODUCTTESTING DEVELOMENT_PROD 995932 PRODUCTTESTING DEVELOMENT_PROD 223488 PRODUCTTESTING DEVELOMENT_TEST 433512 PRODUCTTESTING DEVELOMENT_TEST 640802 PRODUCTTESTING DEVELOMENT_PROD 403866 PRODUCTTESTING DEVELOMENT_UAT 828788 PRODUCTTESTING DEVELOMENT_UAT 751490 PRODUCTTESTING DEVELOMENT_UAT 972562 PRODUCTTESTING DEVELOMENT_UAT 367541 PRODUCTTESTING DEVELOMENT_REG 481360 PRODUCTTESTING DEVELOMENT_REG 920232 PRODUCTTESTING DEVELOMENT_UAT
Желаемый результат должен быть, как показано ниже:
119736 DEVELOMENT_TEST BUGID_TS57 TestID
448094 DEVELOMENT_TEST BUGID_TS57 TestID
206893 DEVELOMENT_TEST BUGID_TS57 TestID
333743 DEVELOMENT_TEST BUGID_TS57 TestID
223488 DEVELOMENT_TEST BUGID_TS57 TestID
433512 DEVELOMENT_TEST BUGID_TS57 TestID
172534 DEVELOMENT_PROD BUGID_TS57 TestID
785275 DEVELOMENT_PROD BUGID_TS57 TestID
995932 DEVELOMENT_PROD BUGID_TS57 TestID
640802 DEVELOMENT_PROD BUGID_TS57 TestID
403866 DEVELOMENT_UAT BUGID_TS57 TestID
828788 DEVELOMENT_UAT BUGID_TS57 TestID
751490 DEVELOMENT_UAT BUGID_TS57 TestID
972562 DEVELOMENT_UAT BUGID_TS57 TestID
920232 DEVELOMENT_UAT BUGID_TS57 TestID
367541 DEVELOMENT_REG BUGID_TS57 TestID
481360 DEVELOMENT_REG BUGID_TS57 TestID
Пожалуйста, советы по же. Заранее спасибо.
Я не получаю понятие сравнения ключи к значениям другого файла. – LittleMagnolia
Пожалуйста, отредактируйте ваш вопрос, чтобы быть более понятным. Код не имеет никакого отношения к вашим данным, например, я не вижу нигде в данных жестко закодированной строки 'MOBILE_DEV'. Кроме того, 'chomo' должен быть' chomp'. и т. д. – jm666