foreach my $t ( sort keys %sidHash ) { if ( scalar @{ $sidHash{$t}{state} } > 1 ) { print map { sprintf "%s: State %s rate: %s\n" => $t, $sidHash{$t}{state}[$_], $sidHash{$t}{rate}[$_] } 0 .. $#{ $sidHash{$t}{state} }; } else { print "$t: State ", join( ", " => @{ $sidHash{$t}{state} } ), " rate: ", join( ", " => @{ $sidHash{$t}{rate} } ), $/; }