比方说,我有元素如何在Perl中将列表输出为逗号分隔值?
@list=(1,2,3);
#desired output
1,2,3
的名单,我想他们打印为逗号分隔值。最重要的是,我不希望最后一个元素后面有一个逗号。
在Perl中这样做的最简洁的方法是什么?
比方说,我有元素如何在Perl中将列表输出为逗号分隔值?
@list=(1,2,3);
#desired output
1,2,3
的名单,我想他们打印为逗号分隔值。最重要的是,我不希望最后一个元素后面有一个逗号。
在Perl中这样做的最简洁的方法是什么?
print join(',', @list), "\n";
join(',', @list);
加入用逗号分隔的列表。
@list=(1,2,3);
$output = join(",",@list);
您有几种选择。最通用的是join
功能加入他们的行列:
print join(',', @list), "\n";
另一种方法是修改special variables,影响print
声明。例如,上述一个的效果可能与
$, = ",";
$\ = "\n";
print @list;
来实现,还可以自动如果它经历了双引号扩展加入列表:
$" = ",";
print "@list","\n";
请注意,如果您修改特殊变量,如$,
,$\
或$"
,您将它们设置为全局。为避免它,请使用local
关键字并将操作数放在一个块中。
对于简单的情况,join
是完美的。
但是,如果你想产生或解析CSV文件,你最好使用Text::CSV。它将处理引用和转义逗号以及各种其他有害问题。它也非常快。
再次,以错误的答案领先! :)没有简单的情况。只有简单的测试数据不能显示所有真实世界的案例。 – 2010-05-22 15:48:23
是的,@ brian,有简单的例子。例如,你可以很容易地处理一个规范或标准,它说“数据值可能不包含逗号”。在一般情况下,“加入”是创建CSV文件的正确方法吗?不,绝对不是。但OP询问了如何在除最后一个之后用逗号打印值的列表 - 除了在相邻值之间插入逗号之外,没有关于机器可分析或转义/引用任何或任何其他要求的结果 - 而且这是* *什么“加入”呢。 – 2010-05-22 16:24:31
根据我的经验,即使说明最终变化的规格,并且如果您要推荐捷径,您也需要强调这些陷阱。否则,人们会走捷径,并在以后伤害自己。 – 2010-05-23 02:13:07
不要这样做。它不处理任何特殊情况。 – 2010-05-22 15:47:53