2014-11-07 55 views
1

我有以下脚本,使用它可以比较使用哈希的两个文件的列。perl使用具有多个密钥的哈希比较文件

但是,当$转换cols [5]和$ table cols [2]匹配时,我想要打印出$ conversion中另一列的值,即cols [1]中的相应值。我试图通过将cols [1]的值赋给我的%散列中的第二个键(称为$ 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"; 
    } 
} 

任何提示如何做到这一点?

回答

2

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

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

,并打印到:

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

山坳被覆盖掉在第二循环中。所以在打印中col是来自表格的值。只需使用$ keyfield2即可从转换中获取col1的值。 – 2014-11-07 02:29:26