perl插值代码

时间:2012-07-31 18:37:27

标签: string perl interpolation

我知道在perl中,您可以通过简单地执行此操作来插入标量:

"This is my $string"

但是,我想知道是否有一种方法可以插入要评估的实际perl代码?用ruby字符串可以看到我想要的想法:

"5 + 4 = #{5 + 4}"

它会评估{}之间的任何内容。

有没有人知道在perl中这样做的方法?谢谢!

4 个答案:

答案 0 :(得分:11)

您可以使用以下技巧:

"5 + 4 = @{[ 5 + 4 ]}"

或者,您可以使用sprintf

sprintf("5 + 4 = %d", 5 + 4);

其中任何一个都会产生所需的字符串。可以说,sprintf比第一个更安全,因为您可以稍微限制插值的类型。然而,第一个在精神上与你想要的更接近。

进一步阅读:

答案 1 :(得分:2)

如果要在字符串中插入计算,可以做三件事:

  1. 使用@{[]}。在第三个括号内,放置你想要的任何表达。

  2. 使用${\ do {}}。将表达式放在第二个大括号内。

  3. 使用简单的字符串连接:$targetstring = "$string1".func()."$string2",其中func()将包含动态内容。

答案 2 :(得分:1)

print "5 + 4 = ", 5 + 4;

只需将其移至引号之外即可。强迫它在引号内是否有意义?

您可以使用printf进行更多格式化,例如:

printf "5 + 4 = %s\n", 5 + 4;

答案 3 :(得分:-1)

您可以使用eval

eval('$a = 4 + 5');

请注意,eval应该谨慎使用,这是非常不安全的。