gpt4 book ai didi

bash - 如何使用 perl -e 将命令行选项传递给 Perl 程序?

转载 作者:行者123 更新时间:2023-11-29 09:21:27 25 4
gpt4 key购买 nike

我想将以破折号(---)开头的命令行选项传递给我使用 -e< 运行的 Perl 程序标志:

$ perl -E 'say @ARGV' -foo
Unrecognized switch: -foo (-h will show valid options).

传递不以 - 开头的参数显然有效:

$ perl -E 'say @ARGV' foo
foo

我如何正确地转义它们以便程序正确读取它们?

我尝试了很多变体,例如 \-foo\\-foo'-foo''\-foo', '\\-foo'。这些都不起作用,尽管有些会产生不同的信息。 \\-foo 实际运行并输出 \-foo

最佳答案

你可以使用-s,比如:

perl -se 'print "got $some\n"' -- -some=SOME

上面的打印:

got SOME

来自perlrun :

-s enables rudimentary switch parsing for switches on the command line after the program name but before any filename arguments (or before an argument of --). Any switch found there is removed from @ARGV and sets the corresponding variable in the Perl program. The following program prints "1" if the program is invoked with a -xyz switch, and "abc" if it is invoked with -xyz=abc.

            #!/usr/bin/perl -s
if ($xyz) { print "$xyz\n" }

Do note that a switch like --help creates the variable "${-help}", which is not compliant with "use strict
"refs"". Also, when using this option on a script with warnings enabled you may get a lot of spurious
"used only once" warnings.

对于简单的参数传递,使用 --,例如:

perl -E 'say "@ARGV"' -- -some -xxx -ddd

打印

-some -xxx -ddd

关于bash - 如何使用 perl -e 将命令行选项传递给 Perl 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com