2012-06-05 38 views
1

我試圖從傳入的電子郵件中提取附件,並使用以下與MIME ::工具相關的代碼:獲取未定義的子程序utf8 :: SWASHGET在./MIME/Parser/Filer.pm處調用line 365

$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

這恰好是re的第一個例子在Filer.pm文件中gex匹配,所以我假設這是執行正則表達式匹配的方式。我之前進行了一次正則表達式匹配,看看它是否確實與此相關,並且在具有相同錯誤的確切位置上失敗。

對此有何幫助?檢索電子郵件和它們的內容我沒有問題,但附件很痛苦。

我的perl的版本是5.8.9,MIME ::工具 - 5.502款,我不是root用戶和可悲的是具有root權限沒有訪問(我得到解決此使用

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

在/ mime包含所有相關CPAN模塊的lib文件夾的頂部,在這種情況下是MIME)

非常感謝!

+0

交叉帖http://www.perlmonks.org/?node_id=974419 – daxim

回答

0

有用的perl修士插話之後,問題是我使用的shebang指向的是舊版本的perl(顯然,在我們的工作環境中有兩個perl版本,位於完全不同的位置,我沒有意識到)。

它仍然有點神祕,爲什麼舊​​版本會以這種方式表現,但我想解決方案似乎是升級到更新的版本(如在其他文章中指出)。

無論如何,我不太確定交叉發佈怎麼樣好,所以如果因爲發佈在兩個地方而導致我的主題感覺多餘,我的最初動機是我會得到完全不同的迴應。

+0

只要你鏈接到其他版本**,你忽略了交叉發佈是好的**。有關基本原理,請參閱http://www.perlmonks.org/?node_id=909976。 – daxim

相關問題