我在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=bullet
和kind=number
,现在是第二次执行else部分(再次kind=number
),我想显示分配给$行的相同语句,我想要显示为<list-item></p>
我在哪里再次检查病情?
答案 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解释器运行它来检查错误。我希望它能给你这个想法。