@Perl中的ARGV(命令行参数)
(在标记问题之前,请先阅读!我知道有人问过类似的问题,但形式不同且不完整) 我试图找到处理命令行参数或脚本选项的自然和正常方法。假设脚本可以采用任何可能的参数或选项类型。例如:@Perl中的ARGV(命令行参数),perl,command-line,arguments,argument-passing,argv,Perl,Command Line,Arguments,Argument Passing,Argv,(在标记问题之前,请先阅读!我知道有人问过类似的问题,但形式不同且不完整) 我试图找到处理命令行参数或脚本选项的自然和正常方法。假设脚本可以采用任何可能的参数或选项类型。例如: /myscript.pl运行异常--help/sbin/proc-f filename CONFIG=set.CONFIG LOG=me.LOG 到目前为止,我知道的最好的方法是使用Dumper,如下所示: use strict; use warnings; use Data::Dumper qw(Dumper); p
/myscript.pl运行异常--help/sbin/proc-f filename CONFIG=set.CONFIG LOG=me.LOG
到目前为止,我知道的最好的方法是使用Dumper
,如下所示:
use strict;
use warnings;
use Data::Dumper qw(Dumper);
print Dumper \@ARGV;
输出:
$VAR1 = [
'runabnormal',
'--help',
'/sbin/proc',
'-f',
'filename',
'CONFIG=set.config',
'LOG=me.log'
];
对此有什么一般性的建议吗?
perl程序员通常如何处理输入到脚本中的复杂参数?使用:
关于命令行args常见做法的两个注意事项:
CONFIG=set.CONFIG
更改为CONFIG=set.CONFIG
./myscript.pl runabnormal --help /sbin/proc -f filename --config=set.config --log=me.log
你说你的问题很特别,与其他问题不同,但在我看来,你所问的只是如何使用
@ARGV
?使用Data::Dumper
并不是一种“最佳”方法,因为它只打印参数的值。这实际上需要--config=set.config--log=me.log
,但这更为传统,当然更好,除非那些X=Y
参数是任意的。//我的($state,$proc)=@ARGV代码>?好眼力。错过了。在回答中更新。@ARGV用于示例中包含的两个非选项。我决定不再去理解他的意图,只是含糊其辞。我不知道如何处理-f filename
。是文件=s
处理-f
?如果我有-f1文件1-f2文件2
?-f1
和-f2
在这种情况下是单独的选项,需要代码来定义它们。但是,可以将多个值传递给同一个选项:
./myscript.pl runabnormal --help /sbin/proc -f filename --config=set.config --log=me.log