我有兩個Perl類。我們打電話給一個Client
,另一個Server
。 Server
是一個明確的穆斯類。 Client
不是Moose類,只是一個非常薄的外觀,通過網絡連接到Server
對象。覆蓋Moose類的導入方法
此外,Client
是我們項目的內部,不應該被其他人使用。現在在我們公司,其他開發者不可能總是被信任。爲了幫助通知他們,他們正在做的事情錯了,我們Client
類有一個自定義的導入語句:
package Client;
sub import {
my ($self, $promise) = @_;
die "this is not a public API"
unless $promise eq "Only CertainTeam should be using this API";
}
sub do_something { ... }
因此,爲了使人們使用Client
,他們將不得不鍵入:
use Client q{Only CertainTeam should be using this API};
我不確定這是否是最好的方法,但它在阻止其他球隊使用Client
方面發揮了很好的作用。我現在想讓Client
成爲駝鹿班。但是,當我添加use Moose;
時,perl非常不高興,因爲我現在壓倒Moose的輸入。我得到以下錯誤:
Prototype mismatch: sub Client::with: none vs (&;$) at Client.pm line 14
任何人有,同時也使一個木類,我可以怎樣堅持的Client
進口行爲的任何想法?
任何人都可以用一個簡單的'使用Client()'來繞過這個。你確定這是不能通過在另一個位置安裝'Client'來解決的(在那些討厭的其他開發者無法訪問的地方)? – AKHolland