perl:显示原始字符串,包括特殊字符

问题描述:

我想输出一个字符串的原始文本,而不插入特殊字符。因此,举例来说,如果我的字符串是"hello\nthere",我想打印,而不是perl:显示原始字符串,包括特殊字符

hello 
there 

的字符串被存储在一个变量,我不跟文字工作,所以它不只是一个单一的事情 - 对比双引号(我不认为)。我怎样才能做到这一点?

Data::Dumper的正确咒语将执行此操作。

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

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

顺便说一句,添加'$ Data :: Dumper :: Ident = 0;'将单线阵列和散列。 – ikegami

这可能有助于

#!/usr/bin/perl 

$str="hello\nthere"; 

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

print "$str\n"; 

输出:

hello\nthere

+0

这需要在每个特殊字符上运行搜索替换。 – ewok

我想打印出一个字符串的原始文本,没有插特殊字符。

这是不可能的。

当字符串被解析时,像\n这样的转义序列被解释(而不是“插入”)。该字符串来源的源代码(“原始文本”)不被解释器存储,因此没有任何方法来检索它。

工具等Data::Dumper可以产生一个字符串,它是可能通过与其等效的转义序列自动替换控制字符类似于源代码,但是这可能不是与原始源表示。例如,不必要的反斜杠(如"this\ example")不会出现在转储表示中,并且转义字符的非标准表示(如"\x0a"\n)将被替换为标准转义字符。