如果参数不正确,脚本不会死
Script does not die if there are incorrect arguments
我对 Perl 编程还很陌生。我想使用 GetOptions 来解析我的脚本的输入参数。我有一个简单的问题 - 如果参数混乱或参数缺少值(对于强制参数),我希望脚本退出并显示使用消息。
src_xml 是强制参数,但如果我 运行 脚本没有为此参数提供值,我会收到一条关于在 tenant_tenant.pl 中 -e 中使用未初始化值 $src_xml 的错误消息.我究竟做错了什么?或者我是否必须检查每个变量是否已定义?
my $dev;
my $src_xml;
my $tgt_syscd = 'L86';
my $tgt_path = '/tmp/test/exports';
my $help;
GetOptions('src_xml=s' => $src_xml,
'tgt_syscd=s' => $tgt_syscd,
'tgt_path=s' => $tgt_path,
'dev' => $dev,
'h|help' => $help
) or die "Usage: perl [=10=] --src_xml NAME --tgt_syscd NAME --tgt_path NAME
\n";
#checking for help
if ( defined $help ) {
die $help_message;
}
你的脚本只会这样死掉:
perl ./foo.pl --src_xml=
使用自定义子例程检查参数?
GetOptions(
'dec-to-base35=i' => \&dec_to_base35,
'base35-to-dec=s' => \&base35_to_dec,
);
sub dec_to_base35 ( $opt_name, $decimal_value ) {
...
完整示例here
顺便说一句,你可以加入"Perl weekly challenge",这可能有助于学习新东西
我对 Perl 编程还很陌生。我想使用 GetOptions 来解析我的脚本的输入参数。我有一个简单的问题 - 如果参数混乱或参数缺少值(对于强制参数),我希望脚本退出并显示使用消息。 src_xml 是强制参数,但如果我 运行 脚本没有为此参数提供值,我会收到一条关于在 tenant_tenant.pl 中 -e 中使用未初始化值 $src_xml 的错误消息.我究竟做错了什么?或者我是否必须检查每个变量是否已定义?
my $dev;
my $src_xml;
my $tgt_syscd = 'L86';
my $tgt_path = '/tmp/test/exports';
my $help;
GetOptions('src_xml=s' => $src_xml,
'tgt_syscd=s' => $tgt_syscd,
'tgt_path=s' => $tgt_path,
'dev' => $dev,
'h|help' => $help
) or die "Usage: perl [=10=] --src_xml NAME --tgt_syscd NAME --tgt_path NAME
\n";
#checking for help
if ( defined $help ) {
die $help_message;
}
你的脚本只会这样死掉:
perl ./foo.pl --src_xml=
使用自定义子例程检查参数?
GetOptions(
'dec-to-base35=i' => \&dec_to_base35,
'base35-to-dec=s' => \&base35_to_dec,
);
sub dec_to_base35 ( $opt_name, $decimal_value ) {
...
完整示例here
顺便说一句,你可以加入"Perl weekly challenge",这可能有助于学习新东西