Re: Email Purge

[email protected] (Denis Poznyakov) Thu, 26 Feb 2009 16:29:16 +0200
Newsgroups perl.scripts
Message-ID <[email protected]>
#!/usr/bin/perl

use strict;

my $list = "e.txt";

purge();

sub purge {
     open LIST, $list or die $!;
     flock LIST, 2;
     my @eml = <LIST>;
     close LIST;

     my %eml0 = map { $_ => 1 } grep { s/[\r\n]//g } @eml;

     open LIST, ">l.txt" or die $!;
     flock LIST, 2;
     print LIST join("\n", sort keys %eml0);
     close LIST;
}



perl wrote:
> Cheers and thanks in advance for you help. I have a routine intended
> to purge duplicate emails from a list. The code below is not working.
> I remember seeing something like... foreach $email(@emails, @emails2))
> { etc ... but I'm lost. Any help is appreciated.
> sub purge
> {
> open (LIST, "$list") or error("$list  purge 1 email  ");
> 	while (my $line = <LIST>)
> 	{
> 	@emails = split(/\r?\n|\r/, $line);
> 	@emails2 =  @emails;
> 	}
> close (LIST);
> 	foreach $email(@emails)
> 	{
> 
> 		foreach $email2(@emails2)
> 		{
> 			if($email ne $email2)
> 			{
> 			$newemail .="$email\n";
> 			}
> 			else{$purgecnt++; }
> 		}
> 	}
> open (LIST, ">>$list") or error("$list  purge 2");
> flock(LIST, LOCK_EX);
> print LIST $newemail;
> close (LIST);
> &success("$list has been purged of $purgecnt duplicates");
> }
> 
>