我正在尝试从传入的电子邮件中提取附件,而我正在使用以下与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)
非常感谢!
答案 0 :(得分:0)
有用的perl僧侣插话后,问题是我使用的shebang指向旧版本的perl(显然我们的工作环境有两个perl版本,位于完全不同的位置,我还没有意识到的)。
为什么旧版本会以这种方式表现,这仍然有点神秘,但我想这个解决方案似乎是升级到更新的版本(正如另一篇文章所指出的那样)。
无论如何,我不太确定交叉发布是否合适,如果我的主题由于被发布在两个地方而感到多余,那么道歉,我最初的动机是我会得到足够不同的回复。