Set::Scalar 是一个优秀的集合操作模块。交集,补集(差集),并交集等操作
cpanm Set::Scalar
#!/usr/bin/perl -wuse strict;#cpanm Set::Scalar;use Set::Scalar;my @num1=(1,2,2,3,3,3,4,5);my @num2=(3,4,,5,6,,7,7,8);# convert array to setmy $set1=Set::Scalar->new(@num1);print join "-",$set1->elements,"\n";#output is 1-2-4-5-3-# 1 2 3 4 5my $set2=Set::Scalar->new(@num2);# 3 4 5 6 7 8#交集my $inter_set= $set1 * $set2;print join "-",$inter_set->elements,"\n";#output is 5 3 4#交并集my $union_set=$set1+$set2;print join "-",$union_set->elements,"\n";#output is 1 2 3 4 5 6 7 8#差集 补集my $set1_diff=$set1-$set2;print join "-",$set1_diff->elements,"\n";#output is 1 2#双补集 非交集my $set_uniq=$set1 % $set2;print join "-",$set_uniq->elements,"\n";#output is 1 2 6 7 8
上面的符号重载和下面的方法是等效的
集合中的元素具有互异性,无序性