我試圖解決一個有錯誤的包中添加軟件包別名,而無需修改源:如何通過猴子修補
- 在
Treex::PML::Schema::Container.pm
長的子程序,包含兩個不存在的包Treex::PML::FSFactory
。它應該是Treex::PML::Factory
。 - 有問題的子程序太長以至於無法從另一個文件複製和修補,所以我想猴子補丁
Treex::PML
,以便它提供Treex::PML::FSFactory
作爲Treex::PML::Factory
的別名。
在我的主程序我嘗試以下(基於this recipe),但它似乎沒有任何效果:
use Treex::PML;
package Treex::PML;
use Package::Alias FSFactory => 'Treex::PML::Factory';
package MyPackage;
...
我怎樣才能得到Treex::PML::FSFactory
春天開始存在,在這樣的一種可以被Treex::PML::Schema::Container
看到的方式?
編輯:這個特殊的錯誤在我的錯誤報告的幾個小時內得到修復!但是,無論如何知道如何使用別名都很有用。儘管我通過子類化解決了我的問題,但正如接受的答案所建議的那樣,我已經添加了一個自我回答,顯示如何使用別名完成它。
你爲什麼不提交錯誤報告?我懷疑作者是社區活躍成員@choroba。 – ikegami
我也會這樣做,謝謝。 CTAN告訴我,作者是Petr Pajas,他最近與我聯繫了相關的isssues(我正在摔跤的應用程序) - 沒有迴應。但我現在看到,谷歌已經把我送到PML的舊版本。 @choroba已經接管了。 – alexis
如果您在*使用Treex :: PML之前執行此操作,您的初始嘗試是否有效? – ysth