我如何打印" $$"没有打印pid?

时间:2017-10-06 06:16:20

标签: perl

我试图在$ comment中存储评论,这可以是任何内容。 说:

GetOptions(
'-C=s'   => \$comment,
);

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

print "$comment\n";

输出结果为:

Hello 109236109236

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

Hello $$$$

1 个答案:

答案 0 :(得分:6)

问题不在于Perl,如下面的代码段所示:

$foo = 'Hello$$$$';
print "$foo"   # prints 'Hello$$$$'

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

shell$ app.pl -C Hello$$$$     # calls app.pl with HelloPIDPID

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

shell$ app.pl -C 'Hello$$$$'   # calls app.pl with 'Hello$$$$'

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