sub uniq(&@) { my($cmpsub, @list)=@_; my $last = shift @list or return (); my @ret =($last); foreach (@list) { push(@ret,$_) unless sortcmp($cmpsub,$_,$last)==0; $last = $_; } @ret; }