9

假设我有一个元素列表

@list=(1,2,3);
#desired output
1,2,3

我想将它们打印为逗号分隔值。最重要的是,我不希望最后一个元素后面有逗号。

在 Perl 中最干净的方法是什么?

4

5 回答 5

21
print join(',', @list), "\n";
于 2010-05-21T15:48:51.947 回答
10

你有几个选择。最通用的是将它们与join功能连接起来:

print join(',', @list), "\n";

另一种方法是修改影响语句的特殊变量。print比如上面的效果可以用

$, = ",";
$\ = "\n";
print @list;

如果它经过双引号扩展,您也可以自动加入列表:

$" = ",";
print "@list","\n";

请注意,如果您修改$,,$\或等特殊变量$",您将在全局范围内设置它们。为避免这种情况,请使用local关键字并将操作数括在一个块中。

于 2010-05-21T15:55:44.353 回答
5

对于简单的情况,join是完美的。

但是如果你想生成或解析 CSV 文件,你最好使用Text::CSV。它将为您处理引用和转义逗号以及各种其他有害问题。它也非常快。

于 2010-05-21T17:16:46.787 回答
3
join(',', @list);
于 2010-05-21T15:49:03.387 回答
2

用逗号加入列表。

@list=(1,2,3);
$output = join(",",@list);
于 2010-05-21T15:49:50.523 回答