chiark / gitweb /
Move most .pl scripts to names without extensions. Drop ssize.pl, which I
[bin.git] / mailsort
diff --git a/mailsort b/mailsort
new file mode 100755 (executable)
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);
+