3

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

"This is my $string"

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

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

它将评估{}.

有谁知道在 perl 中执行此操作的方法?谢谢!

4

4 回答 4

12

您可以使用以下技巧:

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

或者,您可以使用sprintf

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

这些中的任何一个都会产生所需的字符串。可以说,sprintf它比第一个更安全,因为您可以在一定程度上限制插值的类型。然而,第一个在精神上更接近你的愿望。

进一步阅读:

于 2012-07-31T18:43:08.703 回答
2

如果你想在字符串中插入计算,你可以做 3 件事:

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

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

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

于 2012-07-31T18:58:59.407 回答
1
print "5 + 4 = ", 5 + 4;

只需将其移到引号之外。强迫它在引号内有什么意义吗?

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

printf "5 + 4 = %s\n", 5 + 4;
于 2012-07-31T18:44:14.723 回答
-1

您可以使用eval

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

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

于 2012-07-31T18:40:07.223 回答