Perl で文字列変数のすべてのバックスラッシュを保存して出力する方法はありますか? 例えば:
$str = 'a\\b';
出力は
a\b
しかし、私は必要です
a\\b
問題は、バックスラッシュをエスケープするために文字列を処理できないことです。データベースから複雑な正規表現を読み取る必要があり、それらがどの組み合わせと数で表示されるかわからないため、それらを正確に印刷する必要があるためです。ウェブページ。
テンプレート ツールキットと html および html_entity フィルターを試しました。これまでのところ機能する唯一の方法は、一重引用符で囲まれたヒア ドキュメントを使用することです。
print <<'XYZ';
a\\b
XYZ
しかし、変数を補間できないため、このソリューションは役に立たなくなります。
Web ページ、ファイル、およびシェルに文字列を書き込もうとしましたが、運が悪く、常にバックスラッシュが 1 つ消えてしまいます。たぶん私は完全に間違った方向に進んでいるのかもしれませんが、すべての組み合わせと数字にバックスラッシュを含む複雑な正規表現を変更せずに出力する正しい方法は何ですか?
つまり、何百もの正規表現を文字列データとして含むデータベースがあります。それらを perl で読み込んで、データベースにあるのと同じように Web ページに印刷したいと考えています。これらの正規表現は多くの管理者によって常に変更されているため、どのように、何をエスケープすればよいかは事前にわかりません。典型的な例は次のようになります:
'C:\\test\\file \S+'
しかし、翌日には次のように変わる可能性が
'\S+ C:\\test\\file'
あります。おそらく正しい結論は、バックスラッシュがどの組み合わせでどの数字に表示されても、すべてのバックスラッシュを 1 回だけエスケープすることでしょう? これは、それらを2倍にすることが機能することを意味します。そうすれば、問題は私が恐れていたほど大きくはありません。bashでテストしたところ、2つ、さらには3つのバックスラッシュが連続して機能します(4つのバックスラッシュは2つを出力し、6つのバックスラッシュは3つを出力します)。