我想打印一个这样的声明
print "$string -> $string1 ( join (",", @array) )\n";
但是我发现我无法打印连接功能的结果,但是连接只是像普通单词一样打印。例如我的$ string = a,$ string1 = b和@array = c d e给我结果如下
a -> b (join (",",@array) )
我想要的实际结果是这样的。
a -> b (c,d,e)
任何解决方案我都能得到我想要的结果吗?
答案 0 :(得分:4)
这是正确的,你不能那样打印。代码不能在双引号内执行。相反,请加入代码结果,例如:
print "$str -> $str ( " . join(',', @array) . ")\n";
还有很多其他方法可以做到这一点,但重点是代码不能在引号内运行。
答案 1 :(得分:3)
考虑使用printf
printf "%s -> $s (%s)\n", $string1, $string2, join(',', @array);
或者,如果您想将字符串存储在变量中(或从函数中返回),请使用sprintf
;
my $output = sprintf "%s -> $s (%s)\n", $string1, $string2, join(',', @array);
# ... later
print $output;
答案 2 :(得分:2)
只需将打印分隔为多个语句即可。但如果你想一步到位,可以使用:
print "$string -> $string1 ( @{[ join(',',@arr) ]} )\n";
双引号字符串中的代码可以使用baby-cart operator,@{[ ... ]}
执行。当然,这不是推荐的实践 - 因为难以阅读 - 使用其他答案之一。 :)