use strict; use warnings; my ($i, $j, $k, $p1, $p2, $p3, $val, %hash); for $i (0..2) { for $j (3..5) { for $k (qw/first second third/) { $hash{$i}{$j}{$k} = "$i $j $k"; } } } $p1 = \%hash; for $i (sort {$a <=> $b} keys %$p1) { $p2 = $p1->{$i}; for $j (sort {$a <=> $b} keys %$p2) { $p3 = $p2->{$j}; for $k (sort keys %$p3) { $val = $p3->{$k}; print "\$hash{$i}{$j}{$k} = '$val';\n"; } } }