簡體   English   中英

perl使用帶有多個鍵的哈希比較文件

[英]perl compare files using hashes with multiple keys

我有以下腳本,可以使用哈希比較兩個文件中的列。

但是,當$ conversion的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";
    }
}

關於如何執行此操作的任何提示?

使用散列引用是否有原因? 使用哈希嘗試:

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

並將打印到:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM