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

jac*_*ckd 3 perl

请查看以下代码示例.

$ct=5;
print "hey $ct+1";
Run Code Online (Sandbox Code Playgroud)

评估时,返回:

hey 5+1
Run Code Online (Sandbox Code Playgroud)

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

hey 6
Run Code Online (Sandbox Code Playgroud)

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

$dum=$ct+1;
print "hey $dum";
Run Code Online (Sandbox Code Playgroud)

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

ike*_*ami 9

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

print "hey ", $ct+1;
Run Code Online (Sandbox Code Playgroud)

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

  • @chepner,没有这样的假设.我没有设置`$,`,它默认为`undef`,所以它是undef.你可以很容易地说"假设`print`没有被op checker替换为另一个op".这是真的,但无关紧要.有人设置`$,`知道`$,`的设置. (2认同)

squ*_*guy 8

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

my $ct = 5;
printf "hey %s", $ct+1;
Run Code Online (Sandbox Code Playgroud)