2012-12-11 68 views
0

我真的很困惑如何在perl中創建一個方法。我想要做的是有一個方法說
printdoc(%哈希)。我希望能夠調用printdoc(%myhash),然後使用方法中的內容來打印信息,然後返回到我的代碼。我在這裏使用的是,我想要以某種相同的方式打印多個哈希值,但是不必將代碼複製粘貼到一個上面,而是希望能夠調用它。perl中的方法構造

回答

2

您使用sub關鍵字:

sub printdoc { 
    my %hash = shift; 
    # do whatever 
} 

printdoc(%hash) 

然而,這是不理想的,因爲%hash將被複制。相反,傳遞reference更好:

sub printdoc { 
    my $hash_ref = shift; 
    my %hash = %$hash_ref; 
    # do whatever 
} 

printdoc(\%hash); 

順便說一句,這就是所謂的「子程序」或「功能」。一個「方法」特別是一個對象上的函數 - 難怪你只是獲得了面向對象的答案。 :)

+0

哪一個通過參考,因爲這是我想要做的。 %hash做什麼以及%hash做什麼之前做了什麼?是的,這可能是爲什麼。我會看看子程序。 :) TY爲您的幫助。 –

+2

我還鏈接了perlref頁面 - 這是您瞭解引用的位置。 '\%hash'獲得'%hash'的引用,'%$ hash_ref'查找引用並返回一個完整的散列。 (注意我有一個錯誤,它表示'%$ hash',但應該是'%$ hash_ref') – Amadan

+0

感謝您的善意和理解幫助。 :) –