Location : Home > Languages > Perl > Instruction
Title : Function
Toolbox Logo

Function

 関数またはサブルーチンとは、一連の処理を一塊にしてプログラムの他の部分からは独立させたもの。
 Perl 自身が提供する関数も数々あるが、ここではユーザがプログラミングするユーザ関数について説明する。

定義と起動

 関数の前に sub を付けて以下のように定義する。


sub subRoutineName{
   statemant1;
   statemant2;
}

 sub の直後に来るものが関数の名称で、プログラム内に同じ名称のものがあれば最も後ろのものが有効になる。(すなわち後ろのもので前のものが上書きされる。)
 また、定義された関数を利用する(呼び出す)場合には、プログラム内で関数名の前に & を付ける。


&subRoutineName;

戻り値と引数

 関数の実行により得られる値を返すことができる。これを戻り値(return value)と言う。Perl では最後に評価した値が戻り値となる。

 また、関数の実行時に必要なパラメータを引数(argument)として渡すこともできる。たとえば


sub aisatsu{
   print "$_[0], $_[1]!\n";
}

と定義しておけば


&aisatsu("Hello", "World");

と実行すると


Hello World!

と出力される。

ローカル変数の定義

 関数を利用するということは、その関数を呼び出すプログラムが存在しているはずで、包含関係がそこにはあるはずである。またプログラム内に他の働きをする関数も存在しているかも知れない。このような時に、それぞれの処理で用いている変数が衝突する危険がある。もちろん変数の定義に十分に注意してプログラム全体で完全にユニークな変数の定義を行えば別だが、現実にはそれは大変な作業である。このような状況を回避するために local 演算子が使われる。


sub Tashizan{
   local($wa);
   $wa = 0;
   foreach $_ (@_){
      $wa += $_;
   }
   $wa;
}

 この関数呼び出し前に $wa という変数が(グローバル変数として)使われていたとしても、local($wa) の実行時に安全な場所に格納しなおされて、関数実行中は新たなローカル変数 $wa として利用することができる。関数終了時にはローカル変数 $wa は解放され、元の(グローバル変数として使っていたときの)値として用いることができる。

Toolbox Logo
Updated : 2007/04/05