这是部分脚本,我是用HTML格式将Oracle DB中的表格打印成电子邮件,其中包含3列;对于第3列,只有两个值:PASS
或FAIL
。如果单元格为PASS
,则单元格的bgcolor
将为green
,如果为FAIL
,则我希望bgcolor
为RED
}。
以下代码有效,但如果条件为red
,我不确定如何添加其他类(FAIL
)。
chomp($ary[2]);
push(@HTML,sprintf("<td%s>%s</td>",
(($ary[2]) eq "PASS")? " class=\"green\"" : "",
$ary[2]));
答案 0 :(得分:0)
使用空字符串以外的其他内容完成三元条件:
push(@HTML, sprintf('<td class="%s">%s</td>', ($ary[2] eq 'PASS' ? 'green' : 'red'), $ary[2]));
虽然简单的字符串插值可以做到真的需要sprintf
吗?这可以产生更具可读性的代码:
my $class = $ary[2] eq 'PASS' ? 'green' : 'red';
push(@HTML, "<td class='$class'>$ary[2]</td>");
编辑:回答下面的第二个问题。我会使用一个简单的条件而不是多级三元运算符,因为我觉得它更具可读性。
my $class;
if ($ary[2] eq 'PASS') {
$class = 'green';
} elsif ($ary[2] eq 'FAIL') {
$class = 'red';
} else {
$class = 'yellow';
}
push(@HTML, "<td class='$class'>$ary[2]</td>");