Perl 获取未定义的子例程utf8::SWASHGET在./MIME/Parser/Filer.pm第365行调用
我正在尝试从收到的电子邮件中提取附件,并使用以下与MIME::Tools相关的代码:Perl 获取未定义的子例程utf8::SWASHGET在./MIME/Parser/Filer.pm第365行调用,perl,email,extract,mime,attachment,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)时,脚本失败,原因如下: 在/MIME/Parser/Filer.pm
$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)
非常感谢 在有用的perl monks插话之后,问题是我使用的shebang指向了一个较旧的perl版本(显然,我们的工作环境中有两个perl版本,位于完全不同的位置,而我并不知道) 为什么旧版本会有这样的行为仍然有点神秘,但我想解决这个问题的办法似乎是升级到新版本(正如在另一篇文章中指出的) 无论如何,我不太确定交叉发布有多好,因此,如果我的主题因为在两个地方发布而感到多余,我道歉,我最初的动机是我会得到足够不同的响应。交叉发布交叉发布是可以的,只要你链接到其他版本,而你忽略了这些版本。有关基本原理,请参见。