获取未定义的子程序utf8 :: SWASHGET,调用于./MIME/Parser/Filer.pm第365行

时间:2012-06-05 09:01:59

标签: perl email extract mime attachment

我正在尝试从传入的电子邮件中提取附件,而我正在使用以下与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模块的所有lib文件夹,在本例中为MIME)

非常感谢!

1 个答案:

答案 0 :(得分:0)

有用的perl僧侣插话后,问题是我使用的shebang指向旧版本的perl(显然我们的工作环境有两个perl版本,位于完全不同的位置,我还没有意识到的)。

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

无论如何,我不太确定交叉发布是否合适,如果我的主题由于被发布在两个地方而感到多余,那么道歉,我最初的动机是我会得到足够不同的回复。