技術分享 詳解Perl函數的參數接收方法
本文和大家重點討論一下Perl函數的參數接收方法,在學習Perl編程語言的過程中,必須要對它包含的函數以及函數的用法有明確的認識,這里和大家簡單分享一下Perl函數的參數接收方法。希望對大家學習有所幫助。
Perl函數的參數接收方法
重拾Perl
原文:http://www.linuxsir.org/bbs/showthread.php?t=78216
Perl函數和作用域
語法:
SubsubroutineName
{
my(@argsTosubroutine)=@_;#參數通過這種方式傳遞給Perl函數
&doStuff;#執行體
return(@returnValue);#
}
特殊變量@_是參數棧,它對于被調用的子程序來說是本地數據。每次調用子程序時就把參數放入到@_中。@_的工作方式非常象c和c++中的棧。因為參數棧是一個數組,所以傳遞給Perl函數的參數的數量沒有限制。而沒個參數都是一個標量。當調用子程序時候,參數棧的長度是無關緊要的。無論把什么參數傳遞給讀者的子程序,Perl都將負責生成@_,并由子Perl函數決定是否接收參數。
◆操作參數棧:
(在Perl中任何數組的下標都是從0開始的)。
對于@_象其他類型的數組一樣可以通過下標來訪問。
也可以利用shift和popPerl函數來訪問@_.實際上shift和pop表示shift(@_)pop(@_)即為兩個對參數棧操作的Perl函數。表示從棧頂還是棧底對參數棧進行操作。每次調用它們時候,他們取走***個參數(shift)或做后一個參數(pop)。然后在把參數存儲在左側的變量中,在繼續執行時縮短@_.
本地@_棧。這個特性允許在一個Perl函數內部調用Perl函數,不必擔心本層Perl函數影響下層Perl函數。這種靈活性允許Perl使用遞歸程序,
返回值棧是Perl把值返回給子程序的調用者的方法。@values=subroutine($arguments).與參數棧相同,返回值棧也是數組形式。
子Perl函數把值返回給主Perl函數,主要有兩種方法:
◆使用特殊的Perl函數返回方式
◆使用缺省方式(即查看子程序的***一個表達式)。
1.Return關鍵字
Return關鍵字允許你立刻中斷子Perl函數,把參數棧內部的值返回給調用Perl函數。
2.缺省返回
如果在Perl函數中沒有return語句,則子程序的***一句實際上是返回值棧
3.Wantarray
該Perl函數就是Perl中可以使子Perl函數執行雙重職責的Perl函數。Wantarray能判斷一個Perl函數是用在要求數組的環境還是要求在標量的環境。
【編輯推薦】