my @data; for $colour (sort keys %hash){ for $device (sort keys %{ $hash{$colour}}){ push @data, [ $colour, $device, $hash{$colour}{$device}[0] ]; } } @data = reverse sort { $a->[2] <=> $b->[2] } @data;