Comment puis-je échapper des caractères spéciaux dans une chaîne que j'interpelle dans une regex Perl?

J'ai une chaîne de caractères pouvant contenir de caractères spéciaux comme: $(@#, etc.
J'ai besoin d'être en mesure d'effectuer des expressions régulières sur cette chaîne.

Maintenant si ma chaîne a un de ces caractères, la regex semble se briser, puisque ce sont les caractères réservés pour les regex.

Quelqu'un connait un bon sous-routine qui échapperaient à bien l'un de ces caractères, pour moi, de sorte que plus tard je pourrais faire quelque chose comme:

 $p_id =~ /^$key/

source d'informationauteur goe