1

让我们举一个示例代码:

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

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

谢谢

4

2 回答 2

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);
于 2011-09-15T23:08:46.027 回答
0

虽然我确实更喜欢 RET 的原始建议,但最坏的情况是从字符串末尾删除“,”,使用两次斩波。

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

于 2011-09-16T00:15:38.610 回答