(请在标记问题之前先阅读!我知道类似的问题已被提出,但形式不同且不完整)。
我正在尝试找到处理命令行参数或脚本选项的自然和正常方法。假设脚本可以采用任何可能类型的参数或选项。例如:
./myscript.pl runabnormal --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程序员通常如何处理输入到脚本的复杂参数?
答案 0 :(得分:2)
使用Getopt::Long
:
use strict;
use warnings;
use Getopt::Long;
GetOptions(
"log=s" => \( my $log ), # string
"file=s" => \( my $file = "file.dat" ), # string with default
"help" => \( my $help ), # boolean
"config=s" => \( my $config ), # string
) or die "Error in command line arguments";
# Pulls in: ("runabnormal", "/sbin/proc")
my ($state, $proc) = @ARGV;
关于命令行args常见做法的两个注意事项:
CONFIG=set.config
更改为config=set.config
--log=me.log
因此以下方法可行:
./myscript.pl runabnormal --help /sbin/proc -f filename --config=set.config --log=me.log