rlb*_*ond 6 arrays string perl
我想在Perl中以特定格式输出数组的元素.
@myArray = ("A", "B", "C");
$text = something;
Run Code Online (Sandbox Code Playgroud)
有些东西应该是字符串' "A" "B" "C"
'(用双引号括起来的每个元素).
但是,如果@myArray
是空的,那么也$text
应该是空的.我想过使用join()
,比如
$text = "\"" . join("\" \"", @myArray) . "\"";
if ($text eq "\"\"")
{
$text = "";
}
Run Code Online (Sandbox Code Playgroud)
我认为这会奏效.但是,有更优雅的方法吗?
Cha*_*ens 27
用途map
:
#!/usr/bin/perl
use strict;
use warnings;
my @a = qw/ A B C /;
my @b;
my $text = join ' ', map { qq/"$_"/ } @a;
print "text for (@a) is [$text]\n";
$text = join ' ', map { qq/"$_"/ } @b;
print "text for (@b) is [$text]\n";
Run Code Online (Sandbox Code Playgroud)
此外,为了使代码更清晰,您可以使用qq//
运算符(行为完全相同""
,但您可以选择分隔符)以避免转义"
s.
查斯。有正确的答案,但有时我使用$"
变量,它保存要放在数组元素之间进行插值的字符串:
my $text = do { local $" = q<" ">; qq<"@array"> };
Run Code Online (Sandbox Code Playgroud)