perl reduce duplicated elements from array 去重
##$hash{key}++
可以使用之前常用的 $h{$_}++
my @array = qw / 1 2 1 2 3 1 /;
for ( @array ) {
print unless $h{$_}++ ;
}
##slice
也可以使用新学到的slice方法,其实都是通过hash的key写入。
@hasharray{qw/1 2 1 2 1 1 2 3 4 3 4 1 2 3 4 /}=() ;
print join "\t",keys %hasharray;
##slice的两个例子如下:
%saw=(1=>2,3=>4,5=>6);
@saw{a,b,c}=(1,2,3);
@in=('192.168.1.100','127.0.0.1','127.0.0.1','192.168.1.101','192.168.102');
print @saw{1,3};
print @in[0,3];
@array1= qw / a b c /;
@array2 = qw /1 2 3 /;
%hash;
@hash{@array1}=@array2 ;
use Data::Dumper;
print Dumper(%hash);
##遇到3个元素就显示
my @array = qw/ 1 1 1 2 2 3 /;
my %h ;
foreach my $line ( @array ) {
print "$line\n" if $h{$line}++ eq 3;
}