Perl,如何使用“打印”打印数字总和的评估

时间:2012-07-17 17:18:04

标签: perl

请查看以下代码示例。

$ct=5;
print "hey $ct+1";

评估时,返回:

hey 5+1

但是,我正在尝试让代码返回:

hey 6

是否有人知道我是否可以进行某种评估调用以正确发生这种情况,或者是一种改变语法的方法?我知道我可以做到:

$dum=$ct+1;
print "hey $dum";

但我向你展示的是一个更复杂的简单版本。如果我能让这个小例子正常工作,我的大问题就解决了。感谢。

3 个答案:

答案 0 :(得分:9)

您想要执行Perl加法运算符,但代码只有Perl字符串文字。你想要

print "hey ", $ct+1;

如果你在变量中确实有Perl源代码并且想要执行它,那么你必须调用Perl解析器和编译器:eval EXPR

答案 1 :(得分:8)

另一种选择是格式化打印。

my $ct = 5;
printf "hey %s", $ct+1;

答案 2 :(得分:2)

这是一种中间Perl,但你可以把你的表达式放到引用中并在双引号中取消引用它:

print "hey @{[$ct+1]}";
print "hey ${\($ct+1)}";

像这样的代码更难以阅读并赋予Perl对新手不友好的声誉,所以我不推荐它从引号中提取表达式:

print "hey ", ($ct+1);
print "hey " . ($ct+1);