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");
> }
>
>