gpt4 book ai didi

perl - 在 Perl 脚本中处理命令行参数的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 07:10:07 25 4
gpt4 key购买 nike

我正在尝试创建一个在运行时接受命令行参数的脚本/应用程序。当然,这是日常工作,但鉴于这是我第一次这样做,我正在寻找一些指导。假设我的脚本可以采用这些类型的命令行参数:

script -a -p /path/to/pipe -l mail.Error -m root@email.com
script -a -l mail.Error -m root@email.com -p /path/to/pipe

and so on....

由于命令行脚本的灵 active ,您可以传递给它的参数可能有多种顺序,并且可能会丢失/包含无效参数。现在,我知道这可以通过对参数必须如何显示非常严格来解决(首先是 -a,然后是带有路径的 -p,然后是 - l 使用日志工具/优先级,最后 -m 使用有效的电子邮件)并测试它们的所有可能出现情况。

但必须有更好的方法。这是非常低效的(对我来说),我想知道是否有更好的做事方式。我想尽可能保持灵 active ,让事情正常进行,而不是专注于严格的用法。

最佳答案

我使用 Getopt::Long论据。

未经测试的例子:

use Getopt::Long;
## set defaults
my $path = '/tmp';
my $log = 'm.Error';
my $email = 'test@email.com';
my $a = 0;
my $result = GetOptions ("path=s" => \$path,
"log=s" => \$log,
"a" => \$a,
"email=s" => \$email);
## both script -a -p /path/to/pipe -l mail.Error -m root@email.com
## and script -a -l mail.Error -m root@email.com -p /path/to/pipe
## should work now

关于perl - 在 Perl 脚本中处理命令行参数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6930856/

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