La préservation de barres obliques inverses en Perl chaînes

Est-il un moyen en Perl pour préserver et d'imprimer toutes les barres obliques inverses dans une variable de chaîne?
Par exemple:

$str = 'a\\b';

La sortie est

a\b

mais j'ai besoin de

a\\b

Le problème ne peut pas traiter la chaîne en aucune façon à échapper à l'inverses, car
J'ai à lire des expressions régulières à partir d'une base de données et ne sais pas dans quelle combinaison et le nombre qu'ils apparaissent et ont pour imprimer exactement comme ils sont sur une page web.

J'ai essayé avec template toolkit et html, et html_entity filtres. La seule façon dont il fonctionne jusqu'à présent est d'utiliser une seule cité ici document:

print <<'XYZ';
a\\b
XYZ

Mais je ne peux pas interpoler les variables, ce qui rend cette solution inutile.

J'ai essayé d'écrire une chaîne à une page web, dans un fichier et sur la coque, mais pas de chance, toujours une barre oblique inverse disparaît. Peut-être que je suis totalement sur la mauvaise voie, mais est-ce la bonne façon d'imprimer des complexes, des expressions régulières, y compris les barres obliques inverses dans toutes les combinaisons et les numéros sans aucune modification?

En d'autres termes:
J'ai une base de données contenant des centaines d'expressions régulières, comme la chaîne de données. Je veux les lire avec perl et de les imprimer sur une page web exatly comme ils sont dans la base de données.
Il y a tout le temps des modifications à ces expressions régulières par de nombreux administrateurs, donc je ne sais pas à l'avance comment et quoi de s'échapper.
Un exemple typique pourrait ressembler à ceci:
'C:\\test\\file \S+'
mais ça pourrait changer le lendemain à
'\S+ C:\\test\\file'
Peut-être une conclusion correcte serait de s'échapper de chaque barre oblique inverse exactement une fois dans n'importe quelle combinaison et dans le nombre de qui il s'affiche? Cela signifie qu'il fonctionne à double vers le haut. Alors le problème n'est pas aussi grand que je le craignais. Je l'ai testé sur le bash et il fonctionne avec deux et même trois barres obliques inverses dans une rangée (4 backslaches imprimer 2 et 6 barres obliques inverses d'impression 3).

  • Veuillez donner un exemple de ce que vous voulez faire. Une fois les barres obliques inverses sont dans une variable qu'ils restent intacts, et apparaîtra correctement si elles sont interpolées dans une chaîne de caractères. Le seul moyen de mettre une paire de barres obliques inverses dans un littéral de chaîne est à double, mais qui ne devrait pas être un problème. Il y a plusieurs couches logicielles qui considèrent barre oblique inverse pour être un caractère d'échappement, de sorte que votre problème ne peut pas être à l'intérieur de Perl.
InformationsquelleAutor Norbert | 2013-04-23