does a check for literal characters. By specifying you want CAT
but not CATALOG
, you are adding criteria that cannot be expressed using literal characters only. You could get closer by using $KEY = " CAT "
, since your string is whitespace delimited, but this would fail if CAT
is either your first or last entry.
The only way to implement this robustly would be to use a tool that can check for non-literal character criteria, e.g. regular expressions. For example, you could use the word anchor \b to specify you want word boundaries on either side of CAT -- see Using character classes. You can then use $- (see @-) to learn the position of that match. So you might say
my $string = "CATALOG SCATTER CAT CATHARSIS";
my $key = 'CAT';
$string =~ /\b\Q$key\E\b/;
print "$key found at $-\n";
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.