Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
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>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: HoHoH Insertion Order
by sacked (Hermit) on May 12, 2004 at 13:50 UTC | |
|
Re: HoHoH Insertion Order
by jeffa (Bishop) on May 12, 2004 at 13:52 UTC | |
|
Re: HoHoH Insertion Order
by pelagic (Priest) on May 12, 2004 at 13:47 UTC | |
|
Re: HoHoH Insertion Order
by Abigail-II (Bishop) on May 12, 2004 at 13:53 UTC | |
|
Re: HoHoH Insertion Order
by japhy (Canon) on May 12, 2004 at 15:43 UTC | |
|
Re: HoHoH Insertion Order
by CombatSquirrel (Hermit) on May 12, 2004 at 13:53 UTC |