use a Hash of Hashes instead of a Hash of Arrays:
$ echo "host1:group1:9001:user1,user2,user3,user4,user5 host1:group2:9002:user1,user2,user3 host1:group3:9003:user1,user2,user4 host1:group4:9004:user1,user2,user5 host1:group5:9005:user1,user2 host1:group6:9006: host2:group1:9001:user1,user2,user3,user4,user5 host2:group2:9002:user1,user2,user3 host2:group3:9003:user1,user2,user4 host2:group4:9004:user1,user2,user5 host2:group5:9005:user1,user2 host2:group1:9006: host3:group1:9001:user1,user2,user3,user4,user5 host3:group2:9002:user1,user2,user3 host3:group3:9003:user1,user2,user4 host3:group4:9004:user1,user2,user5 host3:group5:9005:user1,user2 host3:group1:9006:" | perl -e' use strict; use warnings; my %table; while ( <> ) { chomp; my ( $host, $grp, $gid, $userid ) = split /:/; my $group = "$grp:$gid"; $table{ $group }{ $userid } = 1; } for my $group ( sort keys %table ) { print "$group:"; my @users = sort keys %{ $table{ $group } }; print join( ",", @users ), "\n"; } ' group1:9001:user1,user2,user3,user4,user5 group1:9006: group2:9002:user1,user2,user3 group3:9003:user1,user2,user4 group4:9004:user1,user2,user5 group5:9005:user1,user2 group6:9006:
In reply to Re: Sorting a hash value that is a list
by jwkrahn
in thread Sorting a hash value that is a list
by g_string
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |