perl Getopt::长型多开关

bejyjqdl  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(137)

我有三种方法和两个开关
我想

  • 设置了SwitchA时要运行的MethodA
  • 如果设置了SwitchA和SwitchB,则运行MethodB
  • 如果设置了SwitchA和SwitchB并且为SwitchB生成了参数,则运行MethodC

像这样

./main --switchA
./main --switchA --switchB
./main --switchA --switchB Hello

我的代码

my $result = GetOptions{
             "SwitchA" => \$opt_a,
             "SwitchB:s" => \$opt_b
   };
            

 methodA if($opt_a);
 methodB if($opt_a && $opt_b eq "");
 methodC if($opt_a && $opt_b ne "")

我尝试过不同的方法,但本质上,如果我只想运行MethodB,方法A总是运行,如果我想运行MethodB,方法A总是运行。
我还没有时间测试方法C。

j2qf4p5b

j2qf4p5b1#

methodA if $opt_a && !defined($opt_b);
methodB if $opt_a && defined($opt_b) && $opt_b eq "";
methodC if $opt_a && defined($opt_b) && $opt_b ne "";

if ($opt_a) {
   if (defined($opt_b)) {
      if ($opt_b eq "") {
         methodB
      } else {
         methodC
      }
   } else {
      methodA
   }
}

相关问题