Perl字符串插值可以执行任何表达式评估吗?

时间:2010-10-15 06:19:38

标签: perl string-interpolation

与问题有关:How do I substitute with an evaluated expression in Perl?

在Perl中,有没有像Ruby这样的方法:

$a = 1;
print "#{$a + 1}";

它可以打印出2

2 个答案:

答案 0 :(得分:57)

在Perl中有类似的简写:

$a = 1;
print "@{[$a + 1]}"

这是有效的,因为[]创建了对包含一个元素的数组的引用(计算结果),然后@{}取消引用数组,其中内部字符串插值打印出的每个元素数组按顺序排列。由于只有一个,它只打印一个元素。

答案 1 :(得分:10)

你可以使用Greg Hewgill提到的@{[ EXPRESSION ]}技巧。

还有Interpolation模块,除了评估表达式之外,它还允许您对要插值的值进行任意转换(如编码HTML实体)。