如何在两者之间打印带连接功能的语句?

时间:2016-02-13 07:42:46

标签: perl join

我想打印一个这样的声明

print "$string -> $string1 ( join (",", @array) )\n";

但是我发现我无法打印连接功能的结果,但是连接只是像普通单词一样打印。例如我的$ string = a,$ string1 = b和@array = c d e给我结果如下

a -> b (join (",",@array) )

我想要的实际结果是这样的。

a -> b (c,d,e)

任何解决方案我都能得到我想要的结果吗?

3 个答案:

答案 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@{[ ... ]}执行。当然,这不是推荐的实践 - 因为难以阅读 - 使用其他答案之一。 :)