请查看以下代码示例。
$ct=5;
print "hey $ct+1";
评估时,返回:
hey 5+1
但是,我正在尝试让代码返回:
hey 6
是否有人知道我是否可以进行某种评估调用以正确发生这种情况,或者是一种改变语法的方法?我知道我可以做到:
$dum=$ct+1;
print "hey $dum";
但我向你展示的是一个更复杂的简单版本。如果我能让这个小例子正常工作,我的大问题就解决了。感谢。
答案 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);