2017-07-26 23 views
0

特殊文字を補間することなく、文字列の生のテキストを出力したい。私の文字列が"hello\nthere"であれば、例えば、私が印刷したい、その perl:特殊文字を含む生の文字列を表示

hello 
there 

いうより

それは単一だけの問題ではありませんので、文字列は、私はリテラルで作業していないよ、変数に格納されます-quote vs二重引用符(私は思っていません)。これどうやってするの?

答えて

3

右手のData::Dumperがこれを行います。

use Data::Dumper; 
$Data::Dumper::Terse = 1; 
$Data::Dumper::Useqq = 1; 

$foo = "hello 
there"; 
print Dumper $foo;   # "hello\nthere" 
+0

btw '$ Data :: Dumper :: Ident = 0;'を追加すると、配列とハッシュが1行になります。 – ikegami

0

これは

#!/usr/bin/perl 

$str="hello\nthere"; 

$str =~ s/\n/\\n/; 

print "$str\n"; 

出力を助けるかもしれない:

hello\nthere私は特殊文字を補間することなく、文字列の生のテキストを印刷したい

+0

これには、すべての特殊文字で検索置換を実行する必要があります。 – ewok

1

これは実際には不可能です。

\nのようなエスケープシーケンスは、文字列が解析されるときに解釈されます( "補間"されません)。文字列が出たソースコード( "原文")はインタプリタによって保存されないので、それを検索する方法はありません。 Data::Dumperよう

ツールは、おそらく自動的に同等のエスケープシーケンスで制御文字を置き換えることにより、ソースコードに似ていますが、これは元のソースの表現と同じではないかもしれない文字列を生成することができます。たとえば、不要なバックスラッシュ("this\ example"など)はダンプされた表現には表示されず、エスケープ文字の非標準表現(\nの場合は"\x0a"など)は標準のものに置き換えられます。

関連する問題