############################################################ sub split_entity { ############################################################ local $entity = shift; # needs a MIME::Entity object my $num_parts = $entity->parts; # how many mime parts? if ($num_parts) { # we have a multipart mime message foreach (1..$num_parts) { split_entity( $entity->parts($_ - 1) ); } } else { # we have a single mime message/part # text if ($entity->effective_type =~ /^text\/(?!(html|enriched))/) { # do something } else { # do something different } } }