Perl哈希:基于另一个文件的键打印文件列

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

我是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";
所需输出应如下所示:

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);