【问题标题】:Getopt::Long multiple switchesGetopt::Long 多个开关
【发布时间】:2013-03-01 15:18:16
【问题描述】:

我有三个方法和两个开关

我愿意

  • 在设置 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。

有什么帮助吗?

【问题讨论】:

  • 这不是实际代码。

标签: perl options long-integer getopt


【解决方案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
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-03
    • 2014-11-10
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多