检查perl的getopt中的多个互斥选项
发布时间:2020-12-16 06:15:16 所属栏目:大数据 来源:网络整理
导读:如何检查只定义-a或-b或-c中的一个? 所以不是-a -b,也不是-a -c,也不是-b -c,也不是-a -b -c. 现在有了 use strict;use warnings;use Carp;use Getopt::Std;our($opt_a,$opt_b,$opt_c);getopts("abc");croak("Options -a -b -c are mutually exclusive") if
如何检查只定义-a或-b或-c中的一个?
所以不是-a -b,也不是-a -c,也不是-b -c,也不是-a -b -c. 现在有了 use strict; use warnings; use Carp; use Getopt::Std; our($opt_a,$opt_b,$opt_c); getopts("abc"); croak("Options -a -b -c are mutually exclusive") if ( is_here_multiple($opt_a,$opt_c,$opt_c) ); sub is_here_multiple { my $x = 0; foreach my $arg (@_) { $x++ if (defined($arg) || $arg); } return $x > 1 ? 1 : 0; } 以上是有效的,但不是很优雅. Here已经是类似的问题,但这是不同的,因为检查两个独占值很容易 – 但这里有多个. 解决方法
或者你可以:
die "error" if ( scalar grep { defined($_) || $_ } $opt_a,$opt_c ) > 1; 标量上下文中的grep返回匹配元素的计数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |