perl的hash:一个键对应多个值的代码

perl哈希表,一个键对应多个值的情况如何写代码

目前有好几个txt文件,每个文件都是key=>value
但是文件中的key有大量的重复 所以想把单个key中所有的value都给列到一起,然后打到一个文件中 方便查找。

读的时候把key当hash的键,对应的值是一个数组引用,直接把相应的值push进去。

代码片断:

my %hash;
while (<>) {
    chomp;
    my ($key, $value) = split("=>");
    push @{$hash{$key}}, $value;
}

for my $key (keys %hash) {
    print "$key => ";
    my $value_arr = $hash{$key};
    print join(", ", @$value_arr), "\n";
}

参考:http://blog.sina.com.cn/s/blog_65ba09d90101gn3z.html

案例:
test.txt文件是城市对应的国家,将城市进行分类,对应到相应的国家。以国家作为key,城市名对应value。

cat test.txt
Chicago, USA
Frankfurt, Germany
Berlin, Germany
Washington, USA
Helsinki, Finland
New York, USA
perl脚本

用到hash引用:将一个数组作为hash的值。

#!/usr/bin/perl -w
use strict;
use Data::Dumper;

my %hash=();
open IN,";
while (<IN>) {
    chomp;
    my ($city, $country) = split /, /,$_;
    $hash{$country} = [] unless exists $hash{$country};
    push @{$hash{$country}}, $city;  #将城市放入对应国家的数组中。
}
close IN;

print Dumper (\%hash);

你可能感兴趣的:(perl的hash:一个键对应多个值的代码)