Perlの謎(その3):subのデフォルトのリターン値
Perlでのサブルーチンは、実は関数とイコールです。
そもそも、サブルーチンと関数の違いは、リターン値を返すか返さないかの違いです。
しかし、Perlでは、サブルーチンでもリターン値を返すことができるので、事実上、関数とイコールなのです。
Perlのサブルーチンはsubキーワードから書き始めます。
リターン値はreturnキーワードで記述します。
しかし、returnキーワードをあまり見かけないのです。
またしかし、それでもリターン値が返って来ているみたいなのです。
そう、実は、returnキーワードは省略可能なのです。
Perlでは、サブルーチンの最後に評価した式の値が、returnキーワードがあってもなくても、リターン値になるのです。
use strict; use warnings; sub closure { my $value = shift; sub { $value++ }; # return sub { $value++ }; と等価 }
Perlをやり始めると、subだし、returnキーワードはないケースが多いし、本当にリターン値が返っているのだろうか・・・。
なんて、悩む時期があるのです。
とにかく、サブルーチンの最後に評価した式の値が、returnキーワードがあってもなくても、リターン値になるのです!