定義副程式使用關鍵字 (keyword) sub ,其後的大括弧放副程式內容。 shift 為用來取得參數 (parameter) 的內建函數 (function) ,例如
sub big { $a = shift; $b = shift; if ($a > $b) { return $a; } else { return $b; } }
這樣 big 就會接收兩個參數,然後判斷哪個參數比較大,最後回傳比較大的參數,這是使用 return 設定回傳值 (return value) ,我們將 big 寫成一個完整範例
#!/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"; # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:bigdemo.pl # 功能:示範 Perl 程式 # 作者:張凱慶 # 時間:西元 2013 年 1 月
第 16 行先比較 33 與 22 的大小,然後印出哪一個比較大
print big(22, 11)."\n";
第 17 行則是比較 "John" 與 "Mary" 的大小,字串比較是先比較第一個字元,按字母順序,順序越後面的值越大
print big("John", "Mary")."\n";
執行結果如下
副程式常見的運用為重複性質的工作,我們另舉一例如下
#!/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; # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:printdemo.pl # 功能:示範 Perl 程式 # 作者:張凱慶 # 時間:西元 2013 年 1 月
這裡總共有三個副程式, print_newline 就是簡單的印出新行
sub print_newline { print "\n"; }
print_something 則是印出參數
sub print_something { $a = shift; print "$a\n"; }
return_something 則是回傳參數
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
沒有留言:
張貼留言