my %ret; if ( defined( $rv ) and @$rv ) { map { %{$ret{$$_{name}}->{$$_{project}}={$$_{result}}}} @$rv; } return %ret; #### my ($value1, $value2); foreach (sort keys %hash) { foreach (sort keys %{$hash{$random_name}}) { foreach $k1 (sort keys %{$hash{$random_name}{$fixed_name1}}) { $value1 = $k1; } foreach $k2 (sort keys %{$hash{$random_name}{$fixed_name2}}) { $value2 = $k2; } etc. } } print "$value1\n";