perl - perl 在字符串中是否有等同于 TCL expr

标签 perl

我有一个编写 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/

相关文章:

perl - 如何在 Perl 中平方一个数字?

perl - 为什么 Perl HTTP::Response 不解码这个撇号?

perl - 当键是动态的时在Perl中对哈希排序

perl - 想要从该行获取第一个单词和从模式 '-' 开始的单词

arrays - 需要根据单独数组的排序对4个不同的数组进行排序

regex - 使用 sed 向后搜索和替换

perl - 有哪些 RAD 工具可用于在 Perl 中构建 GUI?

perl - 对于文件总和值中的每一行

Perl:无法在没有包或对象引用的情况下调用方法 "say"

regex - 如何在 Perl 中匹配多个正则表达式?