use strict;
my %unique;
my @email = qw(
John@foo.com
john@foo.com
CAPTELO@microshaft.con
CAPTELO@microshaft.com
captntenille@muskrat.com
CaPtNtEnIlLe@muskrat.com
);
for (@email) {
my $key = lc $_;
$unique{$key} = $_ unless ($unique{$key} and $unique{$key} =~ /[A-Z
+]/);
}
print join("\n", values %unique), "\n";
Yields the list:
CAPTELO@microshaft.com
CaPtNtEnIlLe@muskrat.com
CAPTELO@microshaft.con
John@foo.com
Of course, this is NOT perfect. Just some random thoughts
if you will. ;) If you are not concerned with the extra
overhead of space, i recommend storing the email address
twice: once as it is, and once all lower-cased. Then you
could issue a SQL statement like:
SELECT distinct lc_email, email, ...
and only use the 'email' column. Actually, even better might
be performing a comparison before you insert the email
address - make sure that a lower case version of the
candidate email address does not already exist in the
database first.
jeffa
L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)
|