检测第二次执行else块的时间

时间:2012-01-11 06:52:53

标签: perl

我在if-block中遇到了问题。我正在比较两个变量,如果它们相等则应该执行一些语句,否则应该执行其他一些语句。 如果第二次执行我的假阻止,我需要返回新的语句。

例如:

if($type eq $kind ){
  $line1 .= "</p></list-item>\n<list-item><p>";
}
else{
  $line1 .= "\n<list list-type=\"$kind\">\n<list-item><p>";
}

这里type=bulletkind=number,现在是第二次执行else部分(再次kind=number),我想显示分配给$行的相同语句,我想要显示为<list-item></p>

我在哪里再次检查病情?

2 个答案:

答案 0 :(得分:2)

您需要保留一些状态,并使用它来确定打印出第二(或第三或......)时间的内容。

my $has_printed_once = 0;

# your loop {

  if ($type eq $kind) {
    # no change
  } else {
    if ($has_printed_once == 0) {
      # print the second thing
    } else {
      $has_printed_once = 1;
      # print the first thing
    }
  }

# } close loop

答案 1 :(得分:1)

在循环之外,您可以定义状态变量。

my $state = 1;

在循环内部,测试并设置状态变量。

if($type eq $kind )
{
    $line1 .= "</p></list-item>\n<list-item><p>";
}
else
{
    if( $state eq 1 )
    {
        $line1 .= "\n<list list-type=\"$kind\">\n<list-item><p>";
        $state++ ;
    }
    else
    {
        $line1 .= "(whatever you want to write the second time)";
    }
}

请注意,这是一段代码。我没有通过perl解释器运行它来检查错误。我希望它能给你这个想法。