Perl数组集合化
如何使数组仅包含不同的值,也就是说,去除一数组中重复的冗余值? Perl 5 没有过滤数组重复值的内建函数,但还是有很多解决方案
方案1:使用List::MoreUtils模块的uniq函数
use List::MoreUtils qw(uniq); my @words = qw(foo bar baz foo zorg baz); my @unique_words = uniq @words;
方案2: 使用grep函数
my @array = qw(aaa,bbb,aaa,ccc,bbb,ddd,aaa); @array = grep {!${$_}++ } @array;
实例:提取数组中含有另一个数组关键字的元素
#!/usr/bin/perl @list = ('abc','ab','cde','efg','aue'); @array = ('a','b','c'); @aa; foreach $li (@list){ foreach $var (@array) { if ($li =~ m/$var/) { push @aa, $li; } } } print "@aa\n"; #@aa = qw(abc,ab,aue,abc,ab,abc,cde) @aa = grep {!${$_}++ } @aa; print "@aa\n"; #@aa = qw(abc,ab,aue,cde)
方案3:利用哈希键的唯一性
my @aa=('a','b','b','c','b','d','e','d','e'); for (@aa) { $aa{$_}=0; } my @aa = sort{$a<=>$b} keys %aa; my @aa = sort @aa; print @aa,"\n";

浙公网安备 33010602011771号