特殊文字を補間することなく、文字列の生のテキストを出力したい。私の文字列が"hello\nthere"
であれば、例えば、私が印刷したい、その perl:特殊文字を含む生の文字列を表示
hello
there
いうより
それは単一だけの問題ではありませんので、文字列は、私はリテラルで作業していないよ、変数に格納されます-quote vs二重引用符(私は思っていません)。これどうやってするの?特殊文字を補間することなく、文字列の生のテキストを出力したい。私の文字列が"hello\nthere"
であれば、例えば、私が印刷したい、その perl:特殊文字を含む生の文字列を表示
hello
there
いうより
それは単一だけの問題ではありませんので、文字列は、私はリテラルで作業していないよ、変数に格納されます-quote vs二重引用符(私は思っていません)。これどうやってするの?右手のData::Dumper
がこれを行います。
use Data::Dumper;
$Data::Dumper::Terse = 1;
$Data::Dumper::Useqq = 1;
$foo = "hello
there";
print Dumper $foo; # "hello\nthere"
これは
#!/usr/bin/perl
$str="hello\nthere";
$str =~ s/\n/\\n/;
print "$str\n";
出力を助けるかもしれない:
hello\nthere
私は特殊文字を補間することなく、文字列の生のテキストを印刷したい
これには、すべての特殊文字で検索置換を実行する必要があります。 – ewok
。
これは実際には不可能です。
\n
のようなエスケープシーケンスは、文字列が解析されるときに解釈されます( "補間"されません)。文字列が出たソースコード( "原文")はインタプリタによって保存されないので、それを検索する方法はありません。 Data::Dumper
よう
ツールは、おそらく自動的に同等のエスケープシーケンスで制御文字を置き換えることにより、ソースコードに似ていますが、これは元のソースの表現と同じではないかもしれない文字列を生成することができます。たとえば、不要なバックスラッシュ("this\ example"
など)はダンプされた表現には表示されず、エスケープ文字の非標準表現(\n
の場合は"\x0a"
など)は標準のものに置き換えられます。
btw '$ Data :: Dumper :: Ident = 0;'を追加すると、配列とハッシュが1行になります。 – ikegami