我知道在perl中,您可以通过简单地执行此操作来插入标量:
"This is my $string"
但是,我想知道是否有一种方法可以插入要评估的实际perl代码?用ruby字符串可以看到我想要的想法:
"5 + 4 = #{5 + 4}"
它会评估{}
之间的任何内容。
有没有人知道在perl中这样做的方法?谢谢!
答案 0 :(得分:11)
您可以使用以下技巧:
"5 + 4 = @{[ 5 + 4 ]}"
或者,您可以使用sprintf
:
sprintf("5 + 4 = %d", 5 + 4);
其中任何一个都会产生所需的字符串。可以说,sprintf
比第一个更安全,因为您可以稍微限制插值的类型。然而,第一个在精神上与你想要的更接近。
答案 1 :(得分:2)
如果要在字符串中插入计算,可以做三件事:
使用@{[]}
。在第三个括号内,放置你想要的任何表达。
使用${\ do {}}
。将表达式放在第二个大括号内。
使用简单的字符串连接:$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
应该谨慎使用,这是非常不安全的。