Learning Perl(Perl語言入門)學習筆記(3)

第四章 子例程
 
1、  子例程(subroutine)即用戶自定義函數,子例程調用時通常在子例程名前加上“&”符號;子例程名屬於獨立的命名空間;
2、  子例程可以在程序中的任何地方進行定義,但要防止兩個子例程重名,否則後者會覆蓋前者;定義標準格式爲:                                                                   
sub 子例程名 {
      語句;
}
3、  Perl中,任何子例程都有返回值,返回值通常是程序所執行的最後一個表達式的運算結果,也可以使用return關鍵字爲子例程指定返回值,當然,也可以省略關鍵字return;在子例程中,程序一旦運行到return語句便會終止,而不會執行其後的任何語句;
4、  子例程的返回值根據不同的上下文可以不所不同,即返回值可以是標量值,也可是列表,甚至可以是“不確定”;可以使用wantarray函數來檢測其返回值類型,子例程返回值爲列表時爲“真”,返回值爲標量時爲“假”;
5、  Perl會自動將傳入的參數列表存入名爲@_的數組變量,無論傳入的是一個列表、標量、還是散列,甚至是以上任意間的組合;
6、  Perl中所有的變量默認均爲全局變量;可以使用my操作符來創建稱爲lexical variable的私有變量,其作用範圍爲所屬的代碼塊;代碼塊中最後一個語句的後的“;”(分號)可省略,但一般不這麼做;如果私有變量的定義不屬於任何塊,那麼其作用範圍是整個程序文件;my操作符不會改變變量賦值時的上下文;my後不加括號時,其聲明的私有變量僅爲緊隨其後的變量;
7、  編譯命令(pragma)是對編譯器的指示,用來指定編譯程序時所採用的規則;use strict可以強制編程期間使用良好的程序語言規則;但不對$_@_進行限制;
8、  子例程調用時,“&”可以省略,前提是Perl可以從語法上分辨出此次調用是一個子例程;比如,調用帶有參數列表,或者子例程定義在子例和定義之前;但是,如果子例程和內置函數重名,則必須使用“&”符號;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章