Akihiro's Programmer Blog

Technology Notes for Personal

「初めてのPerl」 第四章 - 1

第四章から。



第四章 サブルーチン

用語集

サブルーチン ユーザが定義した関数。コードの固まりをリサイクル出来る。
レキシカル変数 プライベート変数。囲まれたブロック内のみにスコープを持つ。
スコープ アクセス可能範囲。




Point


  • サブルーチンの定義と呼び出し。
#helloというサブルーチンを定義して
sub hello {
    print "hello!";
}

#呼び出すと
&hello;

#hello!


  • 戻り値。
#戻り値は最後に評価された値になる
#例えば
$x = 4;
$y = 5;
sub add {
    $x + $y;
}

print &add;

#とすると
#9


  • 引数。
sub max {
    if ( $_[0] > $_[1] ) {
        $_[0];
    }
    else {
        $_[1];
    }
}

print &max( 5, 10 );

#とすると
#10

#サブルーチン内では引数のリストを@_という配列変数で受け取ることが出来る


  • プライベート変数(my演算子)。
#サブルーチン内にプライベート変数を作ることが出来る
#例えば上の&maxを
sub max {
    my ( $x, $y ) = @_;
    if ( $x > $y ) {
        $x;
    }
    else {
        $y;
    }
}

#のように書き直せる

#my演算子を使えばプライベート変数を宣言できる
#(というよりuse strict使ってたらmy付けないとエラーで実行すら出来ない)


  • &maxの引数を何個でも指定できるようにする。
sub max {
    my( $maximum ) = shift @_;
    foreach ( @_ ) {
        if ( $_ > $maximum ) {
            $maximum = $_;
        }
    }
    $maximum;
}

print &max( 1, 9, 5, 8, 2 );

#9

#この場合にかぎらず、引数が空の場合も考慮しておく必要がある


次回は

次回は第四章の続きから。