2012-05-30 172 views
0

我有兩個文件。一個文件只包含密鑰,另一個文件包含密鑰和值。我怎麼能比較一個文件的關鍵與另一個文件的值?如何將一個文件的哈希鍵與另一個哈希值的哈希值進行比較

example of file1 
    steve 
    robert 
    sandy 
    alex 

    example of file2 
    age25, steve 
    age29, alex 
    age30, mindy 
    age50, rokuna 
    age25, steve 

    example of output 
    age25, steve 
    age29, alex 

這裏是我迄今爲止

my $age_name="file1.txt"; 
    my $name="file2.txt"; 
    open my $MYFILE, "<", $name or die "could not open $name \n"; 
    open my $MYFILE2, "<", $age_name or die "could not open $age_name \n"; 
    while(<$MYFILE>) { 
    my ($key, $value) = split(","); 
    my $secondfile = <$MYFILE2>; 

    if (defined $secondfile) { 
     my ($key2, $value2) = split(","); 
     if ($value2=~m/$key/) { 
     print "$key2 - $value2 \n"; 
     } 
    } 

    } 
    close $MYFILE; 
    close $MYFILE2; 

回答

2

您正在閱讀從第一個文件一行,並從第二行一行。問題是線條不必相關。經典的解決方案是將一個文件讀入散列,然後使用散列進行查找,同時讀取第二個文件:

#!/usr/bin/perl 
use strict; 
use warnings; 

my %age_of; 
open my $AGE, '<', 'file2.txt' or die $!; 
while (<$AGE>) { 
    chomp; 
    my ($age, $name) = split /, /; 
    $age_of{$name} = $age; 
} 

open my $NAME, '<', 'file1.txt' or die $!; 
while (<$NAME>) { 
    chomp; 
    print "$age_of{$_}, $_\n" if exists $age_of{$_}; 
} 
+0

嘿,感謝您的幫助。我現在正在抓握:) – Maxyie

相關問題