如何在不打印pid的情况下打印"$$"?

Tar*_*ash 0 perl

我试图在$ comment中存储评论,这可以是任何东西.说:

GetOptions(
'-C=s'   => \$comment,
);
Run Code Online (Sandbox Code Playgroud)

假设用户输入"Hello $$$$".当我尝试打印$ comment或在其他地方使用它时它正在采用当前运行过程的pid.

print "$comment\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

Hello 109236109236
Run Code Online (Sandbox Code Playgroud)

有没有办法按原样打印内容?例如:

Hello $$$$
Run Code Online (Sandbox Code Playgroud)

Ste*_*ich 6

问题不是Perl,如下面的代码片段所示:

$foo = 'Hello$$$$';
print "$foo"   # prints 'Hello$$$$'
Run Code Online (Sandbox Code Playgroud)

问题是用户正在使用的shell.它将$$命令行参数内部扩展到pid,然后将更改的参数提供给应用程序:

shell$ app.pl -C Hello$$$$     # calls app.pl with HelloPIDPID
Run Code Online (Sandbox Code Playgroud)

如果您不想要这个,则用户必须正确引用该参数

shell$ app.pl -C 'Hello$$$$'   # calls app.pl with 'Hello$$$$'
Run Code Online (Sandbox Code Playgroud)

同样,在Perl中无法做到这一点,因为Perl只获得已经扩展的参数.