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"; }