X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=blobdiff_plain;f=mailsort;fp=mailsort;h=e13bc17fa8ebaf3a999bfce70d66d5d89793de30;hb=ece46611b24954ba4ec16cc12e5083acc319bc41;hp=0000000000000000000000000000000000000000;hpb=3f5411d8579463cfb3e89c2aef032aa1bb0dbe3a;p=bin.git diff --git a/mailsort b/mailsort new file mode 100755 index 0000000..e13bc17 --- /dev/null +++ b/mailsort @@ -0,0 +1,46 @@ +#! /usr/bin/perl -w +use diagnostics; +use strict; +use Date::Parse; + +my $message; +my ($fromdate, $date); +my @messages; +my %dates; + +while (<>) +{ + chomp; + if (/^From /) + { + if (defined $message) + { + push @messages, ($message); + $dates{$message} = defined $date ? $date : $fromdate; + } + $message = "$_\n"; + /^From [^ ]* (.*)/; + $fromdate = $1; + $fromdate =~ s/ +/ /g; + $fromdate = str2time $fromdate; + $date = undef; + } + elsif (!(defined $date) && /^Date: (.*)/) + { + $message .= "$_\n"; + $date = str2time $1; + } + else + { + $message .= "$_\n"; + } +} + +if (defined $message) +{ + push @messages, ($message); + $dates{$message} = defined $date ? $date : $fromdate; +} + +print (sort { $dates{$a} <=> $dates{$b} } @messages); +