查看以下代码示例。
$ct=5;
print "hey $ct+1";
评估时,返回:
hey 5+1
但是,我试图让代码返回:
hey 6
有谁知道我是否可以进行某种评估调用以使这种情况正确发生,或者有一种方法可以稍微改变语法?我知道我可以简单地做:
$dum=$ct+1;
print "hey $dum";
但我向您展示的是更复杂事物的简单版本。如果我能让这个小例子正常工作,我的大问题就解决了。谢谢。
查看以下代码示例。
$ct=5;
print "hey $ct+1";
评估时,返回:
hey 5+1
但是,我试图让代码返回:
hey 6
有谁知道我是否可以进行某种评估调用以使这种情况正确发生,或者有一种方法可以稍微改变语法?我知道我可以简单地做:
$dum=$ct+1;
print "hey $dum";
但我向您展示的是更复杂事物的简单版本。如果我能让这个小例子正常工作,我的大问题就解决了。谢谢。
您想执行 Perl 加法运算符,但代码仅具有 Perl 字符串文字。你要
print "hey ", $ct+1;
如果变量中有 Perl 源代码并且想要执行它,则必须调用 Perl 解析器和编译器:eval EXPR
.
另一种选择是格式化打印。
my $ct = 5;
printf "hey %s", $ct+1;
这是一种中间 Perl,但您可以将表达式放入引用中并在双引号内取消引用:
print "hey @{[$ct+1]}";
print "hey ${\($ct+1)}";
像这样的代码更难阅读,并且给 Perl 带来了对新手不友好的名声,所以我不推荐它而不是从引号中提取表达式:
print "hey ", ($ct+1);
print "hey " . ($ct+1);