嵌套在Perl中的语句

时间:2017-05-10 15:23:33

标签: perl

我正在尝试编写一个Perl程序 程序是这样的: 有两个条件。

案例:1)如果cond1 = true且cond2 == true 然后我会检查$ a = 1,$ b = 1,$ c = 1和$ d = 1。 如果是这样,就打印出一些东西

    if(($cond1 eq true) && ($cond2 eq true))
    {
      if(($a=1) && ($b=1) && ($c=1) && ($d=1))
      {
        print " Hey,it worked" ;
      }
      else
     {
       print "Test case failed" ;
     }
   }

案例:2)如果cond1 = true且cond2 = false     那么我只需检查变量a,b和c而不是d。

if(($cond1 eq true) && ($cond2 eq false))
{
  if(($a=1) && ($b=1) && ($c=1))
  {
    print " Hey,it worked" ;
  }
  else
  {
    print "Test case failed" ;
  }
}

案例:3)如果cond1 = false,那么我只需要检查     变量a和b。

    if(($cond1 eq false))
    {
      if(($a=1) && ($b=1))
      {
        print " Hey,it worked" ;
      }
      else
     {
        print "Test case failed";
     }
   }

我使用嵌套的if语句编写它。但程序变得太冗长了。 是否有任何有效的方法使用perl中的特殊运算符编写程序,以便减少代码长度。非常有帮助。

1 个答案:

答案 0 :(得分:0)

  • 您有许多分配(例如$a=1)应该进行比较($a==1)。
  • 如果您有布尔值,请不要与01进行明确比较。请检查一下真相。
  • if (X) { if (Y) { ... } }可以缩减为if (X && Y) { ... }
  • 你有太多的parens。

在这种情况下,您可以使用以下内容:

my $ok;
if ($a && $b) {
   if ($cond1)
      if ($cond2) {
         ++$ok if $c && $d;
      } else {
         ++$ok;
      }
   } else {
      ++$ok if !$cond2 && $c;
   }
}

say( $ok ? "worked" : "didn't work" );