my $key1 = 'xxx'; my %hash = ( $key1 => { a => 'foo_1_AAAA', b => 'foo_1_BBBB', c => 'foo_1_CCCC', }, ); foreach (sort keys %{$hash{$key1}}) { if ($hash{$key1}{$_}=~ /^.+_(\d+)_.+AAA/gi) { print "found1\n"; } if ($hash{$key1}{$_}=~ /^.+_(\d+)_.+BBB/gi) { print "found2\n"; } if ($hash{$key1}{$_}=~ /^.+_(\d+)_.+CCC/gi) { print "found3\n"; } }