#!/usr/bin/perl use strict; use warnings; use Benchmark qw( :all ); use Mail::Internet; use Email::Simple; use MIME::Parser; my @message; push (@message, $_) while <>; my $message = join( '', @message ); cmpthese( 1000, { 'mail_internet' => \&_mail_internet, 'email_simple' => \&_email_simple, 'mime_parser' => \&_mime_parser, } ); exit 0; sub _mail_internet { my $mail_internet = Mail::Internet->new( \@message ); my $body = join( '', @{ $mail_internet->body } ); } sub _email_simple { my $email_simple = Email::Simple->new($message); my $body = $email_simple->body; } sub _mime_parser { my $parser = new MIME::Parser; my $entity = $parser->parse_data($message); my $body_handle = $entity->bodyhandle; my $body = $body_handle->as_string }