Email::Folder provides a very primitive interface to iterating over the contents of various kinds of email containers like Maildir and mbox, and extensions exist for POP and IMAP. The problem is that the interface is somewhat inefficient, very primitive and difficult to extend. Email::Folder can only read the contents of a folder. It can't alter messages, tell you where in the container the message was found, or delete messages -- and it doesn't interoperate efficiently with those modules that can.
I use this code for (and only for) saying "for each message in folder, do X," and eventually I'll probably get used to just using Mail::Box for that instead.