perl使用具有多个键的哈希来比较文件

时间:2014-11-07 01:36:52

标签: perl hash

我有以下脚本,使用哈希比较两个文件中的列。

但是当$ convert的cols [5]和$ table的cols [2]之间存在匹配时,我想打印出$ conversion中另一列的值,即cols [1]中的对应值。我试图通过将cols [1]中的值分配给我的%hash中的第二个键(称为$ keyfield2)来做到这一点。但我没有成功打印它。到目前为止,这是我的代码:

my %hash = ();
while(<$conversion>){
    chomp;
    my @cols = split(/\t/);
    my $keyfield = $cols[5];
    my $keyfield2 = $cols[1];
    $hash{$keyfield,$keyfield2}++;
    }
seek $table,0,0; #cursor resetting
while(<$table>){
    my @cols = split(/\t/); 
    my $keyfield = $cols[2]; 
    if (exists($hash{$keyfield})){
        print $output "$cols[0]","\t","$hash{$keyfield2}","\t","$cols[1]\n";
    }
}

有关如何执行此操作的任何提示?

1 个答案:

答案 0 :(得分:2)

您是否有使用哈希引用的原因。使用哈希试试这个:

my $keyfield = $cols[5];
my $keyfield2 = $cols[1];
$hash{$keyfield} = $keyfield2

并打印到:

print $output "$cols[0]","\t","$hash{$keyfield}","\t","$cols[1]\n";