這里記錄兩種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 "\n###################\n"; 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 "\n###################\n"; 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