Hello haukex,
This is mostly good advice, but this part:
- The regex /\b$team\b/ will match even if $team is only a substring of the string being searched.
looks wrong to me: \b in a regex matches a word boundary, so substrings will not match:
2:24 >perl -wE "for (qw[cat catastrophe]) { say qq[$_: matches] if /c
+at/; }"
cat: matches
catastrophe: matches
2:26 >perl -wE "for (qw[cat catastrophe]) { say qq[$_: matches] if /\
+bcat\b/; }"
cat: matches
2:26 >
See “Assertions” under perlre#Regular-Expressions. But I agree that eq is better than a regex in this situtation, and a hash lookup would be preferable to using grep.
Update: Anonymous Monk, below, makes an excellent point: some substrings will still match. A word boundary is defined as:
a spot between two characters that has a \w on one side of it and a \W on the other side of it (in either order), counting the imaginary characters off the beginning and end of the string as matching a \W.
— and a hyphen is considered a “non-word” (i.e., it matches /\W/).
Cheers,
|