perl函數的參數接收方法

來源:互聯網
上載者:User

重拾perl

原文:http://www.linuxsir.org/bbs/showthread.php?t=78216

Perl
函數和範圍。

文法:

Sub subroutineName

{

my
(@argsTosubroutine) = @_; # 參數通過這種方式傳遞給函數

&doStuff; #
執行體

return ( @returnValue ); #

}

特殊變數 @_
是參數棧,它對於被調用的子程式來說是本機資料。每次調用子程式時就把參數放入到 @_ 中。@_ 的工作方式非常象c和c++
中的棧。因為參數棧是一個數組,所以傳遞給函數的參數的數量沒有限制。而沒個參數都是一個標量。當調用子程式時候,參數棧的長度是無關緊要的。無論把什麼
參數傳遞給讀者的子程式,perl 都將負責產生@_ , 並由子函數決定是否接收參數。

巨集指令引數棧:

(在perl
中任何數組的下標都是從0開始的)。

對於@_象其他類型的數組一樣可以通過下標來訪問。

也可以利用shift 和 pop
函數來訪問@_. 實際上shift 和pop表示 shift(@_) pop(@_)
即為兩個對參數棧操作的函數。表示從棧頂還是棧底對參數棧進行操作。每次調用它們時候,他們取走第一個參數(shift)或做後一個參數(pop)。然後
在把參數儲存在左側的變數中,在繼續執行時縮短@_.

本地@_
棧。這個特性允許在一個函數內部調用函數,不必擔心本層函數影響下層函數。這種靈活性允許perl使用遞迴程式,

傳回值棧是perl
把值返回給子程式的調用者的方法。@values = subroutine ($arguments).
與參數棧相同,傳回值棧也是數組形式。

子函數把值返回給主函數,主要有兩種方法:

使用特殊的函數返回方式

使用預設方式
(即查看子程式的最後一個運算式)。

1. Return 關鍵字

Return
關鍵字允許你立刻中斷子函數,把參數棧內部的值返回給調用函數。

2. 預設返回

如果在函數中沒有return
語句,則子程式的最後一句實際上是傳回值棧

3. Wantarray

該函數就是perl
中可以使子函數執行雙重職責的函數。Wantarray能判斷一個函數是用在要求數組的環境還是要求在標量的環境。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.