2
my $cmd = 'this is a "testin$g" ok';
print Dumper($cmd);

$VAR1 = '这是一个 "testin$g" ok';

my $cmd = 'this is a "testin$g" ok';
$cmd =~ s/\$/\\\$/;
print Dumper($cmd);

$VAR1 = '这是一个 "testin\\$g" ok';

我试图得到一个看起来像这样的字符串:'this is a "testin\$g" ok'。$ 前面有一个 \。但即使我将 $ 替换为 \$ ,它也会以两个结尾。

4

2 回答 2

6

您的正则表达式和字符串都是正确的。Data::Dumper 转义字符本身。

要打印一个简单的字符串,只需使用

print $cmd."\n";

你会发现没问题。

另外,试试这个看看 Dumper 如何转义字符

print Dumper('this is a "testin\$g" ok');
于 2013-10-30T15:17:57.817 回答
1

你的替换是正确的。如果您执行以下操作,您会看到$cmd它只包含一个反斜杠。

print("$cmd\n");    # this is a "testin\$g" ok

Data::Dumper 打印一个字符串字面量,执行时会在结构中创建字符串。

$VAR1 = 'this is a "testin\\$g" ok';

表示转储的变量包含

this is a "testin\$g" ok

因为

this is a "testin\$g" ok

$VAR1执行时分配给

$VAR1 = 'this is a "testin\\$g" ok';
于 2013-10-30T15:51:40.520 回答