문자열 변수의 모든 백 슬래시를 보존하고 인쇄하는 방법은 있습니까? 예를 들어 은 : 출력은Perl 문자열에서 백 슬래시 보존
a\b
$str = 'a\\b';
입니다
하지만 난a\\b
을 필요로하는 문제 I 때문에 백 슬래시를 이스케이프 어떤 방식으로 문자열을 처리 할 수있다 데이터베이스에서 복잡한 정규 표현식을 읽어야하고 어떤 조합과 숫자로 나타나는지 정확히 알지 못하고 웹에있는 것과 똑같이 인쇄해야합니다. 페이지.
템플릿 툴킷과 html 및 html_entity 필터를 사용해 보았습니다. 그것은 지금까지 작동하는 유일한 방법은 하나 여기에 인용 된 문서를 사용하는 것입니다
print <<'XYZ';
a\\b
XYZ
을하지만 나는이 솔루션은 쓸모가 만드는 변수를 보간 수 없습니다.
웹 페이지, 파일 및 셸에 문자열을 쓰려고했지만 행운은 없었습니다. 항상 백 슬래시가 하나 사라졌습니다. 어쩌면 나는 완전히 잘못된 길에 있을지 모르지만, 어떤 변경없이 모든 조합과 숫자에서 백 슬래시를 포함한 복잡한 정규 표현식을 인쇄하는 올바른 방법은 무엇입니까?
다른 말로 : 나는 수백 개의 정규 표현식이 문자열 데이터로 포함 된 데이터베이스를 가지고 있습니다. 필자는 perl로 그들을 읽고 데이터베이스에있는 것처럼 웹 페이지에서 그들을 멋지게 인쇄하고 싶습니다. 많은 관리자가이 정규 표현식에 모든 시간을 변경하므로 어떻게 탈출 할 것인지 미리 알 수 없습니다. 어쩌면 올바른 결론 정확히 어떤 조합하고있는 상관없이 나타나는 번호를 한 번 모든 백 슬래시를 탈출하는 것입니다 'C:\\test\\file \S+'
을하지만 '\S+ C:\\test\\file'
다음날을 변경할 수 있습니다 : 전형적인 예는 다음과 같을까요? 이것은 그것들을 두 배로 작동시키는 것을 의미합니다. 그러면 문제는 내가 두려워하는 것만 큼 크지는 않습니다. 나는 bash에서 그것을 테스트했고 2 행 3 행의 백 슬래시 (4 개의 백 슬래시는 2 개를 인쇄하고 6 개의 백 슬래시는 3 개를 인쇄 함)와 함께 작동합니다.
원하는 것을 보여주세요. 백 슬래시가 변수에 포함되면 변경되지 않고 문자열로 보간 될 경우 올바르게 표시됩니다. 한 쌍의 역 슬래시를 문자열 * 리터럴 *에 넣는 유일한 방법은 문자열을 두 번 올리는 것이지만 문제가되지는 않습니다. 백 슬래시를 이스케이프 문자로 간주하는 여러 소프트웨어 계층이 있으므로 문제가 Perl 내에 있지 않을 수 있습니다. – Borodin