3

查看以下代码示例。

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

评估时,返回:

hey 5+1

但是,我试图让代码返回:

hey 6

有谁知道我是否可以进行某种评估调用以使这种情况正确发生,或者有一种方法可以稍微改变语法?我知道我可以简单地做:

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

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

4

3 回答 3

9

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

print "hey ", $ct+1;

如果变量中有 Perl 源代码并且想要执行它,则必须调用 Perl 解析器和编译器:eval EXPR.

于 2012-07-17T17:20:56.870 回答
8

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

my $ct = 5;
printf "hey %s", $ct+1;
于 2012-07-17T17:21:42.063 回答
2

这是一种中间 Perl,但您可以将表达式放入引用中并在双引号内取消引用:

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

像这样的代码更难阅读,并且给 Perl 带来了对新手不友好的名声,所以我不推荐它而不是从引号中提取表达式:

print "hey ", ($ct+1);
print "hey " . ($ct+1);
于 2012-07-17T17:44:38.927 回答