#!/usr/bin/perl -pl # Splits a single from (log) file into seperate files per month/year. # It turns out that this will split mbox formatted files as well... ;) Have to love # multitaskers. BEGIN { %months = map { $_ => sprintf "%02d",++$i } qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/ }; if ( /^From / ) { my($m,$y) = /(\w+)\s+\d+\s+\S+\s+(\d+)$/; next if ( $lm eq $m ); $lm = $m; $m = $months{$m}; close(OUT); open(OUT, ">>from-$y-$m") || die "Can't open new file! $y-$m\n"; select(OUT); print STDERR "Opened $y-$m"; }