Perl哈希:基于另一个文件的键打印文件列
我是perl新手,发现下面的情况和perl中的哈希概念很难处理。我找到了一些用于处理此场景的输入,但没有安装Text:CSV模块Perl哈希:基于另一个文件的键打印文件列,perl,Perl,我是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
#/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";
所需输出应如下所示:
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
请给我同样的建议。提前感谢。如下所示,其中第一个参数是文件1,第二个参数是文件2:
#!/usr/bin/perl
use strict;
my %hash=undef;
open(my $fh,$ARGV[0]);
while (<$fh>) {
my @fields=split(/\s+/);
$hash{$fields[0]}=1;
}
close($fh);
open(my $fh,$ARGV[1]);
while (<$fh>) {
for my $key (keys %hash) {
if ($key && /$key/) {
print "$_";
}
}
}
close($fh);
#/usr/bin/perl
严格使用;
我的%hash=未定义;
打开(my$fh$ARGV[0]);
而(){
我的@fields=split(/\s+/);
$hash{$fields[0]}=1;
}
收盘价($fh);
打开(my$fh$ARGV[1]);
而(){
对于我的$key(key%散列){
如果($key&&/$key/){
打印“$”;
}
}
}
收盘价($fh);
我不理解将我的密钥与另一个文件的值进行比较的概念。请编辑您的问题以使其更清楚。代码与您的数据无关,例如,我在数据中没有看到硬编码的MOBILE\u DEV
字符串。另外,chomo
应该是chomp
。等等,我很确定,my%hash=undef
不会像你想象的那样。向代码中添加use warnings
会显示问题所在。
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'
}
#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
#!/usr/bin/perl
use strict;
my %hash=undef;
open(my $fh,$ARGV[0]);
while (<$fh>) {
my @fields=split(/\s+/);
$hash{$fields[0]}=1;
}
close($fh);
open(my $fh,$ARGV[1]);
while (<$fh>) {
for my $key (keys %hash) {
if ($key && /$key/) {
print "$_";
}
}
}
close($fh);