# migmbox.pl script # set the mailbox name from command argument 0 (actually 1) $mbox = $ARGV[0]; # open this mailbox file open(MBX, "$mbox") || die "Can't open $mbox file: $!"; # split by '\' (windows) or '/' (unix) separator @var = split(/\x5C|\x2F/, $mbox); # create the mailbox directory mkdir(${var[$#var]}, 0755) || die "Can't create ${var[$#var]} directory: $!"; # change directory this directory chdir(${var[$#var]}); # read from this mailbox file $i = 0; while() { if ( /^From .*\d:\d\d.*(19|20)\d\d/ ) { # check next message close(MSG); # close the message file $i++; # open a single message file if ( !open(MSG, ">${var[$#var]}-$i.msg") ) { print "Can't open ${var[$#var]}-$i.msg file: $!\n"; } else { print MSG $_; # write the first From line } } else { print MSG $_; # write other lines in the message } } close(MBX); # close the mailbox file