Here's one for "in one list not another", like to find
obsolete mailboxes or new users, given new and
old lists. I have lists of rcptusers(ldap), dspam users,
and mailboxes. To not blindly feel out thousands of
everything just to add or delete one.
(Ignore hpot addresses fed to harvest bots at end).
-Bob Dodds
_______________________________________________________
#!/usr/bin/perl -w
#-w
use strict;
use Benchmark;
sub in_a_not_b {
my ( $ra , $rb , %u , %v ) = ( $_[0] , $_[1] , () , () ) ;
grep { $_ and ! ($u{$_}++) } @$rb ;
grep { $_ and ! ($v{$_}++) and ! $u{$_} } @$ra ;
}
my @list = ( qw(a b c d e f g h i j 0 k l 1 2 3 1 2 4 m n o 0 p q r s t
u v w x y z a e f h j a z) , , 0 , ,,'' , '' ) ;
my @list2 = ( qw( d e f g h i j 0 k l 1 3 1 4 m n o 0 p q r s t u v e f
h j ) , , 0 , ,,'' , '' ) ;
sub uniq_nick { my %u = (); grep { $_ and ! ($u{$_}++) } @_ }
sub uniq_nickref { my $r = $_[0] ; my ( @b , %u ) = ( @$r , () ) ; grep
{ $_ and ! ($u{$_}++) } @b }
sub uniq_nickref2 { my ( $r , %u ) = ( $_[0] , () ) ; grep { $_ and !
($u{$_}++) } @$r }
#sub uniq_hah { grep { !(${_}{$_ }++) } @_ }
#sub uniq_hah2_bob { %{ _ } = () ; grep { $_ and !( ${ _ }{ $_ }++ ) } @_ }
timethese( 1_000_000, { # better set to 10_000_000
'nick'=> 'uniq_nick(@list)',
'nickref'=> 'uniq_nickref([EMAIL PROTECTED])',
'nickref2'=> 'uniq_nickref2([EMAIL PROTECTED])',
# 'hah' => 'uniq_hah(@list)',
# 'hah2bob' => 'uniq_hah2_bob(@list)',
'in_a_not_b' => 'in_a_not_b([EMAIL PROTECTED],[EMAIL PROTECTED])'
});
print 'nick: '.join(",", uniq_nick(@list))."\n";
print 'nickref: '.join(",", uniq_nickref([EMAIL PROTECTED]))."\n";
print 'nickref2: '.join(",", uniq_nickref2([EMAIL PROTECTED]))."\n";
# print 'hah: '.join(",", uniq_hah(@list))."\n";
# print 'hah2bob: '.join(",", uniq_hah2_bob(@list))."\n";
print 'in_a_not_b: '.join(",", in_a_not_b([EMAIL PROTECTED], [EMAIL
PROTECTED]))."\n";
__END__
__________________________________________________
Call for papers: How to Make Users Fight,
What is the USE(un solicit'd eemail)? Hefty
fees for non-responding(save time=$saved$earned!)
CTirekickingO [EMAIL PROTECTED]
Last Endangered [EMAIL PROTECTED]
Dilbert-Crusher [EMAIL PROTECTED]
Jaded Liege [EMAIL PROTECTED]