The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MIME::Parser::UURedoer - a Redoer which sniffs out uuencoded data.

DESCRIPTION

A Redoer (see MIME::Parser::Redoer) which looks for embedded "begin" lines in a text/plain, like this:

    Content-type: text/plain

    begin 644 Hello.gif
    M1TE&.#=A$P`3`*$``/___P```("`@,#`P"P`````$P`3```"1X2/F<'MSTQ0
    M%(@)YMB\;W%)@$<.(*:5W2F2@<=F8]>LH4P[7)P.T&NZI7Z,(&JF^@B121Y3
    4Y4SNEJ"J]8JZ:JTH(K$"/A0``#L`
    `
    end

Whenever we are confronted with a message whose effective content-type is "text/plain", we scan the decoded body to see if it contains uuencoded data (generally given away by a "begin XXX" line). By default, we scan only the first 24 lines, though you can change this if you need to.

If it does, we explode the uuencoded message into a multipart, where the text before the first "begin XXX" becomes the first part, and all "begin...end" sections following become the subsequent parts. The filename (if given) is accessible through the normal means.

Notice that, since this action is triggered by a "redo", it will work even if the original uuencoded file has been base64-encoded. I have no earthly idea if that's a good thing, but it's pretty cool if you want it to be. :-)

Note: I do not schedule the uuencoded portions for re-doing. I could, but I don't.

PUBLIC INTERFACE

horizon LINES

Instance method. Set the number of lines to read while looking for lines like "begin 644", before giving up. Negative means no limit. Default is 24.

redo IN, ENTITY, PARSER

Instance method. Try to detect and dispatch embedded uuencode as a fake multipart message. Returns new entity or undef.