【发布时间】:2017-02-10 04:47:32
【问题描述】:
我是 perl 的新手,在 perl 中发现以下情况和哈希概念很难处理。我找到了一些输入来处理这种情况,但没有安装 Text:CSV 模块。
#/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 DelimitedDEVELOMENT_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 的任何行上,则将 column1 、 INFILE01 的第 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
请提供相同的建议。提前致谢。
【问题讨论】:
-
我没有理解将我的键与另一个文件的值进行比较的概念。
-
请编辑您的问题以使其更清楚。该代码与您的数据无关,例如,我在数据中看不到硬编码的
MOBILE_DEV字符串。此外,chomo应该是chomp。等等。
标签: perl