如何输出引号中包含的每个Perl数组元素?

时间:2009-04-11 00:09:05

标签: perl arrays string

我想在Perl中以特定格式输出数组元素。

@myArray = ("A", "B", "C");
$text = something;

字符串应为'"A" "B" "C"'(每个元素都用双引号括起来)。

但是,如果@myArray为空,那么$text也应为空。 我想过使用join(),例如

$text = "\"" . join("\" \"", @myArray) . "\"";
if ($text eq "\"\"")
{
    $text = "";
}

我认为哪种方法有效。但是,有更优雅的方法吗?

4 个答案:

答案 0 :(得分: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";

另外,为了使代码更清晰,您可以使用qq//运算符(行为与""完全相同,但您可以选择分隔符)以避免转义"

答案 1 :(得分:4)

查斯。有正确的答案,但有时我使用$"变量,它保存字符串以插入数组元素之间:

my $text = do { local $" = q<" ">; qq<"@array"> };

答案 2 :(得分:1)

我不确定使用“加入”。你想要一个带引号元素的标量字符串,还是只想要一个带引号元素的数组?如果是后者那么我怀疑以下会这样做

my @a = qw|a b c|;
@a = map {qq|"$_"|} @a;    

当然,这可以避免测试元素是否最初被引用。如果您希望引用数组元素以便使用DBI插入数据库,那么更合适的方法可能是:

@a = map{$dbh->quote($_)} @a;

我希望这会有所帮助

答案 3 :(得分:-2)

它可能不会完全符合您的要求,但我是Data :: Dumper的忠实粉丝。

相关问题