Alf*_*ons 6 arrays perl unique
use Uniq;
my @test1 = ("0","0","A");
my @test2 = ("1","1","A");
@test1 = uniq sort @test1;
@test2 = uniq sort @test2;
print "$_" for @test1;
print "\n";
print "$_" for @test2;
print "\n";
回报:
00A
1A
应该是0A还是不是?!
谢谢
Cha*_*ens 16
我建议使用以下uniq功能List::MoreUtils:
use strict;
use warnings;
use List::MoreUtils qw/uniq/;
my @test1 = uniq qw(0 0 A);
my @test2 = uniq qw(1 1 A);
print "@test1\n@test2\n";
该Uniq模块的版本为0.1,只有一个版本,而且是在2003年.在选择模块时,请务必检查该类信息.具有多个版本(特别是最新版本)的模块往往比只有一个或几个版本的模块更好.  
1: sub uniq{
2:  # Eliminates redundant values from sorted list of values input.
3:  my $prev = undef;
4:  my @out;
5:  foreach my $val (@_){
6:      next if $prev && ($prev eq $val);
7:      $prev = $val;
8:      push(@out, $val);
9:  }
10: return @out;
11: }
第6行中的过滤器仅适用于重复值和真值,因此"0"不会捕获重复值.你为什么不提交错误报告?
这似乎与CPAN for module上报告的错误相同Array::Uniq:Array :: Uniq不处理包含零值条目的数组.Uniq和Array :: Uniq之间的唯一区别是包名称; 我通过diff他们的.pm文件的unix证明了这一点.它们都是由同一作者创建的.
该错误报告是在4年前(2006年)提交的,它仍然是公开的,作者从未回复过它.作者应该消除这两个冗余模块中的一个.我认为假设作者已停止维护这两个模块是合理的.使用其他Answers提出的替代模块之一.
| 归档时间: | 
 | 
| 查看次数: | 252 次 | 
| 最近记录: |