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