libemail-mime-perl が動かない

パッケージ libemail-mime-perl をインストールし、

Email::MIME を試していたのだが、マルチパートのメールのヘッダーがとれないので悩んでいた。
同じプログラムが Debian (etch) 上だと動くのだが、Ubuntu 7.10 ではだめ・・・。


libemail-mime-perl のバージョンは同じだが、依存パッケージの libemail-simple-perl のバージョンが若干違う。Debian は、1.996-1。Ubuntu は、1.999-1。

サンプル:test.pl

use strict;
use warnings;
use Email::MIME;

my $message = join '', <>;

my $mail = Email::MIME->new($message);
foreach my $part ($mail->parts()) {
    print $part->content_type . "\n" if ($part->content_type);
    print "--\n";
}

Debian の結果:

 $ cat error.txt | perl test.pl
text/plain
  • -
message/delivery-status
  • -
message/rfc822
  • -

Ubuntu の結果:

 $ cat error.txt | perl test.pl
  • -
  • -
  • -

仕方がないので、MIME::Parser (libmime-perl パッケージ) を使う。

use strict;
use warnings;
use MIME::Parser;

my $parser = MIME::Parser->new;
$parser->output_dir('/tmp');

my $entity = $parser->parse(\*STDIN);
foreach my $part ($entity->parts) {
    print $part->head->get('Content-Type');
    print "--\n";
}