Here is what that code gives:use Tie::IxHash; #tie %HoHoH, 'Tie::IxHash'; tie %{$HoHoH{text}}, 'Tie::IxHash'; my $HoHoH = {}; $HoHoH->{"alice"}{"aaaa"}{"time"} = "20:00:00"; $HoHoH->{"john"}{"ccc"}{"time"} = "21:00:00"; $HoHoH->{"alice"}{"www"}{"time"} = "22:00:00"; $HoHoH->{"john"}{"aaa"}{"time"} = "23:00:00"; $HoHoH->{"andy"}{"xxx"}{"time"} = "24:00:00"; $HoHoH->{"alice"}{"bbb"}{"time"} = "25:00:00"; $HoHoH->{"andy"}{"yyy"}{"time"} = "26:00:00"; foreach my $user ( sort keys %$HoHoH ) { print "$user\n"; for my $text ( keys %{$HoHoH->{ $user }} ) { print "\t$text"; for my $time ( keys %{$HoHoH->{ $user }->{ $text }} ) { print "\t$time = $HoHoH->{ $user }->{ $text }->{ $time }\n"; } } print "\n"; }
I am looking to sort according to names, but then I would like everything else to be output in the order it was inserted. In other words, output for alice should be:alice bbb time = 25:00:00 www time = 22:00:00 aaaa time = 20:00:00 andy yyy time = 26:00:00 xxx time = 24:00:00 john ccc time = 21:00:00 aaa time = 23:00:00
It won't work to just sort by the time field as sometimes there will be more than one entry with the same time and it is imperative that they be in insertion order.aaaa time = 20:00:00<br> www time = 22:00:00<br> bbb time = 25:00:00<br>
In reply to HoHoH Insertion Order by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |