1|2
1|3
2|3
3|3
4|3
~$ perl -F'\|' -MData::Dumper -ane '$h->{$F[0]}+=$F[1];END{print Dumper $h}' data.txt
$VAR1 = {
'4' => 3,
'1' => 5,
'3' => 3,
'2' => 3
};
:)
2009/5/9 agentzh <agentzh@gmail.com>
2009/5/9 Anthony WU <anthonywuy2k@gmail.com>看來用map的人比較少
map ((/^(\d+)\|(\d+)$/, $hash{$1}+= $2), <>);
map (printf ("%d|%d\n", $_, $hash{$_}), keys (%hash));
呃。。。根据 perlstyle 文档,在 void 上下文下使用 map 要尽量避免:
http://perldoc.perl.org/perlstyle.html
引用相关的一段:
Avoid usinggrep()
(ormap()
) or `backticks` in a void context, that is, when you just throw away their return values. Those functions all have return values, so use them. Otherwise use aforeach()
loop or thesystem()
function instead.
所以从内存效率上讲,在这里使用 map 是比较不划算的,呵呵,尤其当文件比较大的时候 ;)
Cheers,
-agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论