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),脚本失败并显示以下内容:

在 ./MIME/Parser/Filer.pm 第 364 行调用的未定义子例程 utf8::SWASHGET

这恰好是 Filer.pm 文件中正则表达式匹配的第一个实例,所以我假设它与执行正则表达式匹配的方式有关。我之前放置了一个正则表达式匹配,只是为了看看它是否确实与此相关,并且它在那个确切的位置失败并出现相同的错误。

对此有任何帮助吗?我检索电子邮件及其内容没有问题,但附件很痛苦。

我的 perl 版本是 5.8.9,MIME::Tools - 5.502,我不是 root 用户,遗憾的是无法访问 root 权限(我通过使用来解决这个问题

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

在顶部 /mime 包含来自相关 CPAN 模块的所有 lib 文件夹,在本例中为 MIME)

首先十分感谢!

4

1 回答 1

0

在有帮助的 perl 修士插话之后,问题是我使用的 shebang 指向的是旧版本的 perl(显然我们的工作环境中有两个 perl 版本,位于完全不同的位置,我不知道)。

为什么旧版本会以这种方式运行仍然有点神秘,但我想解决这个问题的方法似乎是升级到新版本(如另一篇文章中所指出的那样)。

无论如何,我不太确定交叉发布有多好,所以如果我的主题由于被发布在两个地方而感到多余,我深表歉意,我最初的动机是我会得到足够不同的回应。

于 2012-06-06T05:52:06.117 回答