Comment puis-je échapper à la méta-caractères lorsque je interpoler une variable Perl opérateur de match?

Supposons que j'ai un fichier contenant des lignes je suis en train de match contre:

foo
quux
bar

Dans mon code, j'ai un autre tableau:

foo
baz
quux

Disons-nous parcourir le fichier, l'appel de chaque élément $word, et la liste interne nous vérifions contre, @arr.

if( grep {$_ =~ m/^$word$/i} @arr)

Cela fonctionne correctement, mais le peu possible de cas où nous avons un cas de test de fo. dans le fichier, le . fonctionne comme un opérateur générique dans la regex, et fo. alors matches foo, qui n'est pas acceptable.

C'est bien sûr parce que Perl est d'interpolation de la variable dans une expression régulière.

La question:

Comment puis-je la force de Perl pour utiliser la variable littéralement?

OriginalL'auteur Paul Nathan | 2010-01-04