我试图在$ 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)
问题不是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只获得已经扩展的参数.