use strict; use warnings; # two sample entries, notice i moved this comment my %modhash = ( 'first:second:third' => [ qw(bob bill bo) ], 'Canada:USA:China' => [ qw(beaver eagle Mao) ], ); for my $key ( keys %modhash ) { my @subkeys = split( /:/, $key ); for my $i (0..$#subkeys) { print "subkey-> $subkeys[$i]\t", "subvalue-> $modhash{$key}->[$i]\n"; } print "\n"; } #### my %hash = ( first => 'bob', second => 'bill', third => 'bo', Canada => 'beaver', USA => 'eagle', China => 'Mao', ); #### use Tie::RangeHash; tie my %rhash, 'Tie::RangeHash'; %rhash = ( 'first,second,third' => 1, 'Canada,USA,China' => 2, ); print $rhash{'second'},$/; print $rhash{'China'},$/;