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

时间:2017-07-26 17:23:25

标签: string perl

我想打印出字符串的原始文本,而不插入特殊字符。所以,例如,如果我的字符串是array_splice(),我想打印它,而不是

Dim ctl As Control
For Each ctl In Me.Controls
    Debug.Print TypeName(ctl)
    If TypeName(ctl) <> "ComboBox" Then ' <-- check if control is not a Combo-Box
        Debug.Print ctl.Name
        If ctl.Name <> "SrchVal" Then
            ctl.Enabled = False
        End If
    End If
Next ctl

字符串存储在一个变量中,我不使用文字,因此它不仅仅是单引号与双引号的问题(我不认为)。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

Data::Dumper的正确咒语将会这样做。

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

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

答案 1 :(得分:1)

  

我想打印出字符串的原始文本,而不插入特殊字符。

这不可能。

解析字符串时,解释\n之类的转义序列(不是#34;插值&#34;)。字符串来自的源代码(&#34;原始文本&#34;)不会被解释器存储,因此无法检索它。

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

答案 2 :(得分:0)

这可能会有所帮助

#!/usr/bin/perl

$str="hello\nthere";

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

print "$str\n";

输出:

hello\nthere