Примечание: вы уверены, что не можете просто использовать хеш для того, что делаете? Это кажется ужасно сложным, сделать что-то так просто:
my %hash = (
key1 => 'value1',
key2 => 'value2',
);
exists $hash{$search_in}; # true/false.
my $result = $hash{$search_in}; # returns 'value1' when $search_in is 'key1'
Или, если вам нужен поиск по значению:
my %flip = reverse %hash;
$result = $flip{$search_in};
И если вам действительно нужен поиск по ключу (или значению) регулярного выражения:
sub string_match {
my ($lookup_hash, $key ) = @_;
for my $hash_key ( %{ $lookup_hash } ){
return $hash_key if $key =~ $lookup_hash->{$hash_key};
}
return; # not found.
}
my $k = string_match({
'whitespace at end' => qr/\s+$/,
'whitespace at start' => qr/^\s+/,
}, "Some Garbage string "); # k == whitespace at end