[求助]如何去除列表中的重复项?用hash的key感觉有些浪费

[求助]如何去除列表中的重复项?用hash的key感觉有些浪费

我要处理一个文件,统计以某字符串开头的行。把重复行只输出一次。估计包括重复行会有2万个,去掉重复行应该不超过100个。每行60字节左右。

如果用hash,论坛已有
perl -e '@arr=(1,2,3,3,4,2,3,5);$hash{$_}++ for @arr;print "$_ $hash{$_}\n" for (keys %hash)'

perl -e 'my @array=(1..10,5,22,57);my %hash;my @new=grep { ++$hash{$_} < 2 } @array;print join " ",@new;'
perl -le '@a=(1..10,5,22,57);@b=map{%h; $_ if ++$h{$_}==1}@a;print qq(@b);'

QUOTE:
#!/usr/bin/perl

@frist=(1,2,3,4);@second=(2,3,4,5);
for (@frist){$data{$_}=0;}
for (@second){$data{$_}=0;}
@thrid=sort {$a<=>;$b} keys %data;
print "\@frist is @frist\t\t \@second is @second \t\t \@thrid is @thrid\n";
my @aa=('a','b','b','c','b','d','e','f','b','g','e','g','a');
print "primer \@aa is @aa\n";
for (@aa) {$aa{$_}=0;}
my @aa=sort {$a<=>;$b} keys %aa;
@bb=sort(@aa);
print @bb,"\n";

3种,我还没试,不知道空间要求如何。

如果不用hash,那要怎么做呢?
最好是动态处理的,不要把2万一次全读入。


QUOTE:
估计包括重复行会有2万个,去掉重复行应该不超过100个...

太适合hash了, 动态读入, 空间最大占用也就那100个
为什么不用shell命令呢,grep '^xxxx'|sort -u > a.txt 不就可以了,不论多大的文件都可以啊!
有时候用perl反倒把问题复杂化了