0

我有三种方法和两种开关

我想

  • 如果设置了 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,则始终运行 Method A,如果我希望运行 MethodB,则始终运行 MethodA。

还没有开始测试 MethodC。

有什么帮助吗?

4

1 回答 1

1
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
   }
}
于 2013-03-01T15:44:01.813 回答