Perl 入門指南 - 副程式

副程式 (subroutine) 是一種功能性的模組,可以將程式 (program) 分割成小部分,藉由呼叫方法安排執行順序




定義副程式使用關鍵字 (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

沒有留言: