#!/usr/bin/perl use warnings; use strict; # Replace the filenames and "listname" as needed my %subscribers; open(FILE,") { chomp; my @line = split(/ /); # Just look for our list next unless $line[5] eq "listname:"; # ignore pending subscribes, redundant auto-unsub notices next if $line[6] eq "pending"; next if $line[7] eq "auto-unsubscribed"; my $digest; # get rid of the (digest) so email is in the right field if ($line[7] eq "(digest)") { $digest = splice(@line,7,1); } my $email = $line[7]; # strip quotes, semicolons from email address $email =~ tr/[\";]//d; if ($line[6] eq "new") { if ($digest) { $subscribers{$email} = "digest"; } else { $subscribers{$email} = "regular"; } } elsif ($line[6] eq "deleted") { delete $subscribers{$email} } else { warn "Action $line[6] not known\n"; } } close(FILE); open(REGULARFILE,">/tmp/regularfile") or die "Couldn't create regular file\n"; open(DIGESTFILE,">/tmp/digestfile") or die "Couldn't create digest file\n"; foreach my $email (sort keys %subscribers) { if ($subscribers{$email} eq "digest") { print DIGESTFILE "$email\n"; } else { print REGULARFILE "$email\n"; } } close(REGULARFILE); close(DIGESTFILE);