Perlトレーニングブック Part05
関数
sub hoge
でオリジナル関数作るとかそういうやつ。- 関数の中から関数呼び出しできたり、関数の中に関数定義したりできるよ〜
- 関数って言うよりも、サブルーチンって言う方がしっくりくる感
ローカル変数とプライベート変数
- ローカル変数
local $val
で宣言- 宣言されたサブルーチンと、そこから呼び出したサブルーチン内で有効
- プライベート変数
my $val
で宣言- 宣言されたサブルーチン内でのみ有効
sub print_val{ print ("呼び出し先の変数の値は $val です\n"); } sub local_val{ local $val = 'local'; print "関数内の変数値は $val です\n"; print_val(); } sub private_val{ my($val) = 'private'; print "関数内の変数値は $val です\n"; print_val(); } $val = 'global'; print_val; # -> 呼び出し先の変数の値は global です local_val; # -> 関数内の変数値は local です # 呼び出し先の変数の値は local です private_val; # -> 関数内の変数値は private です # 呼び出し先の変数の値は global です
ファイル分割
require hogehoge.pl;
という形で、他のファイルからサブルーチンを呼び出すことができる。同名のサブルーチンがあった場合には、早く呼び出された方が有効になる。
- が、
use warnings
,use strict
付けてればちゃんと警告してくれる。Subroutine sum redefined at PerlTraining_155_2.pl line 5.
- が、
ファイルをまたいで同名のサブルーチンを利用する場合には、パッケージを使う。
package hogehoge;
と宣言する。- C++のスコープ解決演算子、というものと同じ仕組みらしい。
関数呼び出し
- 値参照 - サブルーチン内で値をいじっても、サブルーチン外の値には影響しない
- リファレンス参照 - サブルーチン内で値をいじると、サブルーチン外の値にも影響する
再帰呼び出し
- サンプルプログラム全然わかんない
- ふつうにビット演算とか出てくるんだけど、想定している読者層がわからねぇ・・・