use strict; sub find_inB { my ($data_hr, $string) = @_; my $no_result = 'no result'; return ( exists $$data_hr{ $string } ? $$data_hr{ $string } : exists $$data_hr{ lc $string } ? $$data_hr{ lc $string } : $no_result ); } sub look_for_dataB { my %hash = map { ($_, 'xxx'); } qw( A B C D ); print "D: " . find_inB(\%hash , 'D') . "\n"; print "A: " . find_inB(\%hash , 'A') . "\n"; print "B: " . find_inB(\%hash , 'B') . "\n"; print "B: " . find_inB(\%hash , 'B') . "\n"; } print "# look_for_dataB:\n"; look_for_dataB(); __END__ # look_for_dataB: D: xxx A: xxx B: xxx B: xxx