我有一个编写 html 页面的脚本。
很多内容是固定的,所以我用打印qq!在单个语句中输出格式良好的文本。
有几行需要在其中嵌入一个变量 + 2,所以我最终预先计算了 $myVarplus2,这在这种情况下是可以的。
my $myVarPlus2 = $myVar + 2;
在 TCL 中,我可以在语句中使用 [expre $myVar + 2]。 Perl 有类似的概念吗?
这相当于我想做的
print qq!
$('td:nth-child(n)').show();!
$('td:nth-child([expr $myVar + 2])').removeClass('failCount');!
我宁愿不打破声明
print qq!
$('td:nth-child(n)').show();!
$('td:nth-child(" . $myVar + 2 . qq!').removeClass('failCount');!
但接受它可能是最简单的方法。
最佳答案
一种方法,穷人在 Perl 字符串中进行模板化:
print qq!
\$('td:nth-child(n)').show();
\$('td:nth-child(@{[ $myVar + 2 ]}).removeClass('failCount');!
这取决于您自己的判断,您是否觉得这比分解语句更具可读性,以及在什么时候变得难以维护。
另一种方法是 printf
printf q!
$('td:nth-child(n)').show();
$('td:nth-child(%s).removeClass('failCount');!, $myVar + 2;
但是除了 perl golf 之外,除非这是一个简单的一次性项目,从长远来看,我认为您最好查看 Template Toolkit , 然后你可以这样写你的输出
$template = q!
$('td:nth-child(n)').show();
$('td:nth-child([% myVar +2 %]).removeClass('failCount');!;
关于perl - perl 在字符串中是否有等同于 TCL expr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152117/