2016-02-13 42 views
0

我想打印一份声明中这样如何在连接函数中打印语句?

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

,但我发现我不能打印加入函数的结果,但该联接只打印像正常字。例如我的$字符串= A,$字符串1 = B和@array = C dË给我像下面

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

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

a -> b (c,d,e) 

任何解决方案,我可以得到我想要的结果?

+0

请参见['当有人回答我的问题?'我应该怎么办(http://stackoverflow.com/help/someone-answers) – zdim

回答

1

简单地将打印分离为多个语句。但是,如果你想要做一个步骤,可以使用:

print "$string -> $string1 (@{[ join(',',@arr) ]})\n"; 

一个双引号字符串中的代码可以使用baby-cart operator@{[ ... ]}执行。当然,这不是建议练习 - 因为难以阅读 - 使用其他答案之一。 :)

4

这是正确的,你不能这样打印。代码不能在双引号内执行。取而代之的是,加入的代码的结果,例如:

print "$str -> $str (" . join(',', @array) . ")\n"; 

有一些其他的方式来做到这一点,但主要的一点是,代码不能引号内运行。

+0

谢谢!有用! – tim

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;