#!/usr/bin/perl -w # Tries to replace the Subject: line of a colloquium announcement with # something useful. # No warranty. my $msg = ""; my $wday = qr/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)((ne|r)?s|ur)?day,?\s*/; my $mon = qr/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(r?uary|ch|il|e|y|ust|(t?em|o)ber|\.)?\s*/; my $dom = qr/(\d\d?)/; my $subj = ""; my $body = 0; while(<>){ my $lin = $_; $msg .= $_; # chomp; # print "|$_|\n"; if(!$body && $lin =~ /^Subject: (.*)/){ $subj = $1; $subj =~ s/\[[^]]*\]\s*//g; # Don't really care which list it comes from. $subj =~ s/NRAO\s*//i; $subj =~ s/colloquium\s*//i; } elsif($lin =~ /^$/ && !$body){ $body = 1; } elsif($body == 1 && $lin =~ /$wday$mon$dom/i){ $wday = $1; $mon = $4; $dom = $7; $body = 2; } elsif($body == 1 && $lin =~ /$mon$dom, (\d\d\d\d)/i){ $mon = $1; $dom = $4; my $yr = $5; $wday = `date -d \"$mon $dom $yr\" +%a`; chomp $wday; $body = 2; } elsif($body == 1 && $lin =~ /$mon$dom/i){ $mon = $1; $dom = $4; $wday = `date -d \"$mon $dom\" +%a`; chomp $wday; # print "wd found without yr: |$wday|\n"; $body = 2; } elsif($body == 2 && $subj eq "" && $lin =~ /^\s*([A-Z].+)\s*$/){ $subj = $1; } elsif($body == 2 && $subj eq "" && $lin =~ /\"([^"]+)\"/){ $subj = $1; } # print $body; } if($body > 1){ $subj = sprintf("%s %s %2d: %s", $wday, $mon, $dom, $subj); } $msg =~ s/\nSubject: .*/\nSubject: $subj/; print $msg; #print $subj;