2012-01-11 13 views
-6

ifブロックに問題があります。私は2つの変数を比較しています。等しい場合は、いくつかのステートメントを実行しなければならず、別のステートメントを実行する必要があります。 私の偽のブロックが2回目に実行された場合、私は新しい文を返す必要があります。例えばelseブロックが2回目に実行されたことを検出する

:ここ

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、今、他の部分(再びkind=number)二回目が実行されると、私は私がしたい、$ラインに割り当てられた同じ文を表示したいですショーのように<list-item></p>

ここでもう一度条件をチェックしますか?

答えて

2

何らかの状態を維持し、それを使って2番目(または3番目、または...)の時間を印刷するかどうかを判断する必要があります。

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

状態変数を定義することができます。

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インタプリタを通して実行していません。私はそれがあなたにアイデアを与えることを望む。

関連する問題