-2

我的样本数据:

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不太明白。我尝试在一行中使用多个代码编写上述代码。不成功。mapsortmap

你能告诉我怎么做吗?

谢谢。

4

2 回答 2

2

Is this the sort of thing you mean?

It may be fun to play with, but you should always go for clarity over fancy coding. map and grep are rarely significantly faster than the equivalent for loop, and can use up much more memory.

use strict;
use warnings;

my %tmp;
$tmp{$_}++ for map { (split)[-1] } <>;
print for map "$_ => $tmp{$_}\n", sort keys %tmp;

output

A => 3
B => 2
C => 1
于 2013-01-24T09:36:43.980 回答
2

map转换一个列表。您没有要转换的列表。

grep过滤列表。您无需过滤任何内容。

sort排序。您可以使用它对输出进行排序。(如果您在对输出进行排序时遇到问题,请随时提出有关它的问题。一定要包括对您的问题的描述以及它的演示。)

于 2013-01-24T04:40:45.227 回答