0

3 つのメソッドと 2 つのスイッチがあります

をお願いします。

  • 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 に答える