0

2つのファイルがあります。1つのファイルにはキーのみが含まれ、別のファイルにはキーと値の両方が含まれます。あるファイルのキーを別のファイルの値と比較するにはどうすればよいですか?

  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;
4

1 に答える 1

2

最初のファイルから1行、2行目から1行を読み取っています。問題は、線を関連付ける必要がないことです。従来の解決策は、1つのファイルをハッシュに読み込んでから、そのハッシュを使用して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{$_};
}
于 2012-05-30T21:59:12.720 に答える