2011-08-08 125 views
10

這裏是我的意思如何在使用perl模塊時將參數傳遞給perl模塊?

use SOAP::Lite +trace => [ qw(debug) ]; 

那麼,什麼是+trace在SOAP ::精簡版的例子嗎?我猜它是包範圍散列的一部分?我的意思是如果我想將類似的語法加入到我的模塊中,我該怎麼做?

如果我還需要導入符號,這將如何工作

use Foo qw(some_function); 

這項工作?

use Foo qw(some_function) +option => 'bar'; 

模塊中是否需要額外的魔法才能讓你傳遞這樣的東西?

注:不知道我喜歡這個問題的標題,隨意改寫

+0

您可以通過閱讀源代碼來查看'SOAP :: Lite'是如何實現的; 'perldoc -m SOAP :: Lite'是實現此目的的一種方法。 –

+1

@Keith閱讀源代碼並沒有帶來所有對提問的理解......並導致巧合編碼 – xenoterracide

回答

12

當你做use Foo @args,會發生什麼幕後是相同的:

BEGIN { 
    require 'Foo.pm'; 
    Foo->import(@args); 
}; 

所以在這種情況下,use SOAP::Lite +trace => [ qw(debug) ]被變成了import調用是這樣的:

SOAP::Lite->import('+trace' => [ 'debug' ]); 

正是如何實現import例程取決於模塊的作者。大多數模塊使用由Exporter提供的標準import,但是您可以放置​​任何您想要的東西,它將在use時間執行。

+2

並且通過這種理解,您可以嘗試理解SOAP :: Lite :: import()的源代碼。 –