【发布时间】:2010-05-21 15:48:02
【问题描述】:
假设我有一个元素列表
@list=(1,2,3);
#desired output
1,2,3
我想将它们打印为逗号分隔值。最重要的是,我不希望最后一个元素后面有逗号。
在 Perl 中最简洁的方法是什么?
【问题讨论】:
标签: perl text-formatting
假设我有一个元素列表
@list=(1,2,3);
#desired output
1,2,3
我想将它们打印为逗号分隔值。最重要的是,我不希望最后一个元素后面有逗号。
在 Perl 中最简洁的方法是什么?
【问题讨论】:
标签: perl text-formatting
print join(',', @list), "\n";
【讨论】:
您有多种选择。最通用的是用join函数加入它们:
print join(',', @list), "\n";
另一种方法是修改special variables,这会影响print语句。比如上面的效果可以用
$, = ",";
$\ = "\n";
print @list;
如果列表经过双引号扩展,您也可以自动加入:
$" = ",";
print "@list","\n";
请注意,如果您修改 $,、$\ 或 $" 等特殊变量,则需要全局设置它们。为避免这种情况,请使用 local 关键字并将操作数括在一个块中。
【讨论】:
对于简单的情况,join 是完美的。
但如果你想生成或解析 CSV 文件,你最好使用Text::CSV。它将为您处理引用和转义逗号以及各种其他有害问题。它也非常快。
【讨论】:
join 是创建 CSV 文件的正确方法吗?不,绝对不是。但是 OP 询问如何在除最后一个之外的每个值之后打印带有逗号的值列表 - 除了在相邻值之间放置逗号之外,结果是机器可解析或转义/引用任何其他要求或任何其他要求 - 那就是 正是 join 做了什么。
join(',', @list);
【讨论】:
用逗号加入列表。
@list=(1,2,3);
$output = join(",",@list);
【讨论】: