1

受信メールから添付ファイルを抽出しようとしていますが、MIME::Toolsに関連する次のコードを使用しています。

$parser = MIME::Parser->new();
$parser->output_dir("./tmp");
$message  = $parser->parse_data($msg); # $msg contains the email contents

を呼び出す$parser->parse_data($msg)と、スクリプトは次のように失敗します。

未定義のサブルーチンutf8::SWASHGETが./MIME/Parser/Filer.pm行364で呼び出されました

これは、Filer.pmファイルでの正規表現マッチングの最初のインスタンスであるため、正規表現マッチングが実行される方法と関係があると思います。正規表現の一致を先に置いて、それが実際にそれに関連しているかどうかを確認しましたが、同じエラーでその正確な場所で失敗しました。

これに関して何か助けはありますか?メールとその内容を取得するのに問題はありませんが、添付ファイルは苦痛でした。

私のperlバージョンは5.8.9、MIME :: Tools-5.502です。私はrootユーザーではなく、残念ながらroot権限にアクセスできません(これを回避するには、

BEGIN { unshift @INC, "~email/mime"; }

/ mimeに関連するCPANモジュール(この場合はMIME)のすべてのlibフォルダーが含まれている上部

よろしくお願いします!

4

1 に答える 1

0

親切なperlの僧侶たちが声をかけた後、問題は私が使っていたシバンが古いバージョンのperlを指していたことでした(どうやら私たちの職場環境には2つのperlバージョンがあり、私が気付いていなかったまったく異なる場所にあります)。

古いバージョンがこのように動作する理由はまだ少し不思議ですが、これに対する解決策は新しいバージョンにアップグレードすることだと思います(他の投稿で指摘されています)。

とにかく、クロスポストがどれだけ大丈夫かわからないので、2か所に投稿されてトピックが冗長になったらお詫びします。最初の動機は、十分に異なる反応が得られることでした。

于 2012-06-06T05:52:06.117 に答える