Hello:
I have two lists of emails saved in flat files one email per line.
My script removes the emails in list 2 if they are present in list 1. Then reprints the email list, one email per line, back into list 2 but without the weeded out emails.
Except that when reprinting back to list 2 the order is random and I want to preserve the same order in which the emails were at first.
EXAMPLE:
if in email list 1 I have:
email_02@server .com
email_04@server .com
email_06@server .com
email_08@server .com
email_10@server .com
and if in email list 2 I have:
email_01@server .com
email_02@server .com
email_03@server .com
email_04@server .com
email_05@server .com
email_06@server .com
email_07@server .com
email_08@server .com
email_09@server .com
email_10@server .com
I want to end up with:
email_01@server .com
email_03@server .com
email_05@server .com
email_07@server .com
email_09@server .com
But Im getting :
email_09@server .com
email_03@server .com
email_07@server .com
email_05@server .com
email_01@server .com
Here is my script:
Thanx for your help
virtualweb
I have two lists of emails saved in flat files one email per line.
My script removes the emails in list 2 if they are present in list 1. Then reprints the email list, one email per line, back into list 2 but without the weeded out emails.
Except that when reprinting back to list 2 the order is random and I want to preserve the same order in which the emails were at first.
EXAMPLE:
if in email list 1 I have:
email_02@server .com
email_04@server .com
email_06@server .com
email_08@server .com
email_10@server .com
and if in email list 2 I have:
email_01@server .com
email_02@server .com
email_03@server .com
email_04@server .com
email_05@server .com
email_06@server .com
email_07@server .com
email_08@server .com
email_09@server .com
email_10@server .com
I want to end up with:
email_01@server .com
email_03@server .com
email_05@server .com
email_07@server .com
email_09@server .com
But Im getting :
email_09@server .com
email_03@server .com
email_07@server .com
email_05@server .com
email_01@server .com
Here is my script:
Code:
foreach (@All_Emails_1) {
chomp;
if( /\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6}/ ){
$valid_emails{$_} = '1';
}
}
foreach(@All_Emails_2){
chomp;
if( $valid_emails{$_} eq '1' ){
print"<B>($valid_emails{$_}) ($_)<br>";
delete($valid_emails{$_});
push @repeated_emails,$_;
}
}
my @New_All_Emails_1 = keys(%valid_emails);
$Back_Up_Emails_1 = 'All_Emails_BKUP.txt';
$Old_All_Emails_1 = 'All_Emails_1.txt';
$New_All_Emails_1 = 'All_Emails_1.txt';
rename($Old_All_Emails_1, $Back_Up_Emails_1)|| die print"Cant rename $Back_Up_Emails_1";
open (EMAILLIST, ">>$New_All_Emails_1") || die print"<br><b>Error: Cant open $New_All_Emails_1";
flock (EMAILLIST);
foreach $email @New_All_Emails_1){
print EMAILLIST "$email\n";
}
flock (EMAILLIST, 8);
close (EMAILLIST);
virtualweb
Comment