这里记录两种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

示例代码如下:

  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

作者:天使不设防
出处:https://www.cnblogs.com/mmtinfo/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.