如何取出数组中的不同元素并存入一个数组里

如何取出数组中的不同元素并存入一个数组里

以下的数组:@read={"0101","0101","0102","0101","0103","0102"}
我如何得到这样的数组:@read={"0101","0102","0103"}
急用,谢谢大家。
我很久以前写的一个专门处理的函数,可能比较烂,但是处理你的问题应该没问题,呵呵。
哦,还是小小的修改一下。

[Copy to clipboard] [ - ]
CODE:
sub aonly
{
        my @atemp = @_;
        my @atemp1;
  for my $i (0..$#atemp)
        {
                my $atmp1 = rtrim($atemp[$i]);
                if($atmp1 ne "")
                {
                        for my $j (($i+1)..$#atemp)
                        {
                                my $atmp2 = rtrim($atemp[$j]);
                          if($atmp2 eq $atmp1)
                                {
                                        $atemp[$j]="";
                                }
                        }
                        push @atemp1,$atmp1;
                }
        }
        @atemp=@atemp1;
        return @atemp;
}

呵呵,忘了,还有个配合的函数。。。

[Copy to clipboard] [ - ]
CODE:
# trim space / tab at the right end
sub rtrim {
        my $r = shift;
        $r =~ s/[      \n\r]+$//;
        return $r;
}

谢谢,多谢,问题解决了
两个for效率低一点 用hash好一点
use List::MoreUtils qw(uniq);
http://www.unix.com.ua/orelly/perl/cookbook/ch04_07.htm
哦,好吧,用hash...呵呵。

[Copy to clipboard] [ - ]
CODE:
sub No_Duplicate_Array
{
        my @array = @_;
        my $hash;
        for my $i(0..$#array)
        {
                $hash{$array[$i]} = undef;
        }
        return @array = keys(%hash);
}



QUOTE:
原帖由 andyhau791010 于 2008-8-27 14:10 发表
以下的数组:@read={"0101","0101","0102","0101","0103","0102"}
我如何得到这样的数组:@read={"0101","0102","0103"}
急用,谢谢大家。

Are you sure that your array expression with "{}" instaed of "()" is RIGHT?
@read={"0101","0101","0102","0101","0103","0102"}
That is an array contains reference to hash!!!

For extracting an uniq array, hash and map can be used too:
@read = ("0101", "0101", "0102", "0101", "0103", "0102");
%seen = map {$_, 1} @read;
@uniq = sort keys %seen;
print "@uniq";