如何从哈希的最后一个元素(从循环)中删除逗号? perl的

时间:2011-09-15 23:06:11

标签: perl loops hash comma

让我们举一个示例代码:

foreach my $cmp_id ( sort { $a <=> $b } keys %totals )
{
    print $cmp_id . ", ";
}

如何在没有逗号的情况下获取哈希打印的最后一个元素?如果可能的话,没有字符串操作(子字符串或类似的东西)。

由于

2 个答案:

答案 0 :(得分:15)

除非你需要做别的事情,否则你将走很长的路......

print join(", ", sort { $a <=> $b } keys %totals);

join使用作为第一个参数给出的分隔符​​连接数组,这非常适合您所追求的内容。

<强>更新

我的解决方案确实有效,您需要在问题中提供更多信息。

将键添加到数组中,并在完成后打印它们,即:

my @keys;
foreach my $cmp_id (sort { $a <=> $b } keys %totals){
    push @keys, $cmp_id;
    ... other processing
}
print join(", ", @keys);

答案 1 :(得分:0)

虽然我更喜欢RET的原始建议,但最糟糕的情况是从字符串的末尾放下“,”,使用chop两次。

或substr:$ cmp_id = substr($ cmp_id,0,-2);