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



Reply via email to