Perl的駱駝精神(二)

來源:互聯網
上載者:User

標籤:

在Perl中可以自己建立子程式(Subroutine):

關鍵字sub,子程式名以及用花括弧封閉起來的代碼塊。

                sub  marine { ... }

子程式名與標量的命名空間是不同的兩個部分。

 

子程式的傳回值:最後一次運算的運算式即是預設的傳回值。也可以用return來顯式的返回,這樣之後的語句不會執行。

                       在標量上下文返回的會是標量,在列表上下文返回的也是列表。

 

子程式中的參數:子程式內部可以使用@_,$_[1],$_[2],,,這樣的變數來表示。@_變數是子程式私人變數,遞迴調用時,不會出錯。

                       在子程式調用時,在子程式名後用括弧括住的列表運算式。

                       $n = &max(10,15);          #10後被送到$_[1],15被送到$_[2],@_=(10,15);

 

子程式私人變數定義: my關鍵字來聲明詞法變數(lexical variable)。           my($m,$n) = @_;  #建立私人變數並賦值。

                              不僅可以定義在子程式中,還可以定義在if, while, foreach中。

                               只能用來聲明單個標量/變數,列表/數組。          my $fred, $barney;    #錯誤,第二個變數無法聲明。

持久性私人變數: 用關鍵字state來聲明,在子程式的多次調用中保留變數之前的值。範圍仍然是只存在於子程式內部。

                        sub  marine  {state $n=0; $n+=1; print; }

                        也可以用來聲明數組和雜湊類型。   state @number。

 

子程式的調用:子程式可以通過 (&+子程式名)的方式來調用。

                    如果編譯器之前看到過子程式的定義,那麼可以不加&,而直接調用子程式。

                    如果Perl可以通過文法規則直接判斷它只能是子程式調用,那麼也可以省略 &。

                            也就是說只要你將參數列表放進括弧內,就一定是子程式調用。

 

use strict;        #強制要求使用一些嚴格的,良好的編程風格。

Perl的駱駝精神(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.