我想打印一份声明中这样如何在连接函数中打印语句?
print "$string -> $string1 (join (",", @array))\n";
,但我发现我不能打印加入函数的结果,但该联接只打印像正常字。例如我的$字符串= A,$字符串1 = B和@array = C dË给我像下面
a -> b (join (",",@array))
实际的结果,我想是这样的结果。
a -> b (c,d,e)
任何解决方案,我可以得到我想要的结果?
我想打印一份声明中这样如何在连接函数中打印语句?
print "$string -> $string1 (join (",", @array))\n";
,但我发现我不能打印加入函数的结果,但该联接只打印像正常字。例如我的$字符串= A,$字符串1 = B和@array = C dË给我像下面
a -> b (join (",",@array))
实际的结果,我想是这样的结果。
a -> b (c,d,e)
任何解决方案,我可以得到我想要的结果?
简单地将打印分离为多个语句。但是,如果你想要做一个步骤,可以使用:
print "$string -> $string1 (@{[ join(',',@arr) ]})\n";
一个双引号字符串中的代码可以使用baby-cart operator,@{[ ... ]}
执行。当然,这不是建议练习 - 因为难以阅读 - 使用其他答案之一。 :)
这是正确的,你不能这样打印。代码不能在双引号内执行。取而代之的是,加入的代码的结果,例如:
print "$str -> $str (" . join(',', @array) . ")\n";
有一些其他的方式来做到这一点,但主要的一点是,代码不能引号内运行。
谢谢!有用! – tim
考虑使用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;
请参见['当有人回答我的问题?'我应该怎么办(http://stackoverflow.com/help/someone-answers) – zdim