我的示例数据:
1 2 A
1 2 3 B
1 A
1 2 3 C
1 3 A
1 3 B
我想计算最后一个字的数量
我的Perl代码:
my %tmp;
while(<>) {
chomp;
my $last=(split)[-1];
$tmp{$last}++;
}
while(my ($k,$v)=each %tmp){
print "$k=>$v\n"
}
工作正常。我最近学习了grep
,map
,sort
,但不太了解。我尝试在一行中使用多个map
编写上面的代码。不成功。
你能告诉我怎么样吗?
感谢。
答案 0 :(得分:2)
map
转换列表。你没有要改造的清单。
grep
过滤列表。您无需过滤任何内容。
sort
排序。您可以使用它来对输出进行排序。 (如果您对输出进行排序时遇到问题,请随时询问有关它的问题。请务必提供问题描述以及演示。)
答案 1 :(得分:2)
这是你的意思吗?
玩这个游戏可能很有趣,但你应该总是去清楚花哨的编码。 map
和grep
很少比同等的for
循环快得多,并且可以消耗更多的内存。
use strict;
use warnings;
my %tmp;
$tmp{$_}++ for map { (split)[-1] } <>;
print for map "$_ => $tmp{$_}\n", sort keys %tmp;
<强>输出强>
A => 3
B => 2
C => 1