如果使用 -e eval 开关,则强制 Perl 停止对命令行参数的特殊处理

Vad*_*rov 5 perl command-line-arguments

perl -e 'print(123, @ARGV);' a b
# 123ab

perl -e 'print(123, @ARGV);' --help
# prints Perl's help instead
Run Code Online (Sandbox Code Playgroud)

这是一个演示该问题的玩具示例。在我的真实用例中,我使用-e函数从嵌入式解释器执行大型脚本perl_parse(...),该脚本有自己的开关处理--help,因此我想在-e.

是否可以?

Dav*_*ell 7

使用双连字符停止参数处理:

$ perl -e'print "[@ARGV]\n"' -- --help
[--help]
$
Run Code Online (Sandbox Code Playgroud)

  • 指示命令行参数结尾的“--”也适用于许多其他 Posix 程序,请参阅 [Posix 接口指南](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12)中的指南 10 .html#tag_12_02) (2认同)