我有以下脚本,使用哈希比较两个文件中的列。
但是当$ 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";
}
}
有关如何执行此操作的任何提示?
答案 0 :(得分:2)
您是否有使用哈希引用的原因。使用哈希试试这个:
my $keyfield = $cols[5];
my $keyfield2 = $cols[1];
$hash{$keyfield} = $keyfield2
并打印到:
print $output "$cols[0]","\t","$hash{$keyfield}","\t","$cols[1]\n";