use strict; use warnings; use List::MoreUtils qw(first_value); my(%DetailSheet) = ( ... ); my %Column = %{$DetailSheet{ColumnName}}; my $description = first_value {$Column{$_}{XlsColumn} == 2} keys %Column; print $description, "\n";