
定義副程式使用關鍵字 (keyword) sub ,其後的大括弧放副程式內容。 shift 為用來取得參數 (parameter) 的內建函數 (function) ,例如
sub big { $a = shift ; $b = shift ; if ( $a > $b ) { return $a ; } else { return $b ; } } |
這樣 big 就會接收兩個參數,然後判斷哪個參數比較大,最後回傳比較大的參數,這是使用 return 設定回傳值 (return value) ,我們將 big 寫成一個完整範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/env perl sub big { $a = shift ; $b = shift ; if ( $a > $b ) { return $a ; } else { return $b ; } } print "\n" ; print big(22, 11). "\n" ; print big( "John" , "Mary" ). "\n" ; print "\n" ; # 《程式語言教學誌》的範例程式 # 檔名:bigdemo.pl # 功能:示範 Perl 程式 # 作者:張凱慶 # 時間:西元 2013 年 1 月 |
第 16 行先比較 33 與 22 的大小,然後印出哪一個比較大
16 | print big(22, 11). "\n" ; |
第 17 行則是比較 "John" 與 "Mary" 的大小,字串比較是先比較第一個字元,按字母順序,順序越後面的值越大
17 | print big( "John" , "Mary" ). "\n" ; |
執行結果如下

副程式常見的運用為重複性質的工作,我們另舉一例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/env perl sub print_newline { print "\n" ; } sub print_something { $a = shift ; print "$a\n" ; } sub return_something { return shift ; } print_newline; print_something(return_something( "There is no spoon." )); print_newline; # 《程式語言教學誌》的範例程式 # 檔名:printdemo.pl # 功能:示範 Perl 程式 # 作者:張凱慶 # 時間:西元 2013 年 1 月 |
這裡總共有三個副程式, print_newline 就是簡單的印出新行
3 4 5 | sub print_newline { print "\n" ; } |
print_something 則是印出參數
7 8 9 10 | sub print_something { $a = shift ; print "$a\n" ; } |
return_something 則是回傳參數
12 13 14 | sub return_something { return shift ; } |
執行結果如下

學會副程式後,我們要進一步來看看怎麼設計套件 (package) 囉!
中英文術語對照 | |
---|---|
副程式 | subroutine |
程式 | program |
關鍵字 | keyword |
參數 | parameter |
函數 | function |
回傳值 | return value |
套件 | package |
您可以繼續參考
基礎篇
相關目錄
回 Perl 入門指南
回 Perl 教材
回首頁
參考資料
http://perldoc.perl.org/perlintro.html
http://perldoc.perl.org/perlsyn.html
http://www.tutorialspoint.com/perl/perl_subroutines.htm
沒有留言:
張貼留言