# Rebuild the canonical list, but now we lose duplicates foreach my $name (keys %byname) { # First instance of the id number needs an array ref if (! $final{$byname{$name}}) { $final{$byname{$name}} = [ $name ]; } # Additional instances get pushed onto the existing # (anonymous) array else { push @{$final{$byname{$name}}}, $name; } }