我是perl的新手,發現這很難處理perl下面的情況和hash概念。我發現一些輸入來處理這種情況,但沒有安裝Text:CSV模塊。Perl hash:基於另一個文件的key打印文件列
#/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在每一行逐個。
對於如果在INFILE01的任何行上存在密鑰DEVELOMENT_TEST,則將INFILE01的第1列第3列和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