perl脚本统计一列中重复

有一列数据,大概十几万行,如下格式:
41087
41088
41088
41089
41089
41090
41091
41091
……
现需要用Perl设计一脚本,统计出每行数据是否重复出现过,将统计结果放入其它文件。统计过后的格式如下:
41087,不重复
41088,重复
41088,重复
……
我用笨方法写了个算法,是双层的for循环,结果这效率……(遍历次数:十万乘十万,可怕),再求大虾们一有效率的算法。以便学习,多谢谢赐教。
我再举一返三的问一下:如果有两列数据,子列行数少,母列行数多,如果要求统计子列中的每一行是否在母列中出现过,这又该如何做才有效率?我的算法还是从子列中取出一行,去母列中遍历,结果效率又是子列行数乘以母列行数,又是天文数字。
再次拜谢。

while($line=<>){
chomp $line;
if (not exist $results{$line}){
$results{$line} = 1;
}
else{
$results{$line}++;
}
}

foreach (keys %results){
if ($results{$_} == 1){
print $_."不重复\n";
}
else{
print $_."重复".$results{$_}."次\n";
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-25
先排序
相似回答