这里记录两种perl数组去重的办法,一种利用哈希(hash),一种直接利用perl自带的模块List::MoreUtils内部的函数uniq。
一、利用hash去重
示例代码如下:
1 #!/usr/bin/perl -w 2 use strict; 3 4 my @list=qw /1 2 3 2 1 4 aa a bb c b bb d/; 5 foreach (@list){print "$_ ";} 6 7 print " ################### "; 8 my %ha; 9 my @uniq=grep{++$ha{$_}<2}@list; 10 foreach (@uniq){print "$_ ";}
基本原理是将原数组元素作为hash的key,遍历计数,grep函数筛选出只出现一次的key,放入新的数组@uniq中。
输出结果:
1 1 2 3 2 1 4 aa a bb c b bb d 2 ################### 3 1 2 3 4 aa a bb c b d 4
二、利用uniq函数去重
这个函数所在的模块List::MoreUtils还有很多其他操作数组的用法,感兴趣的可以看看,多了解下,这里附上参考网址:https://metacpan.org/pod/List::MoreUtils#NAME
示例代码如下:
1 #!/usr/bin/perl -w 2 use strict; 3 use List::MoreUtils ':all'; 4 5 my @list=qw /1 2 3 2 1 4 aa a bb c b bb d/; 6 foreach (@list){print "$_ ";} 7 8 print " ################### "; 9 my @uni=uniq(@list); 10 foreach (@uni){print "$_ ";} 11
直接调用uniq()函数即可,输出结果如下:
1 1 2 3 2 1 4 aa a bb c b bb d 2 ################### 3 1 2 3 4 aa a bb c b d