サブルーチンの定義はスコープの影響を受けない
サブルーチンの定義は、スコープの影響を受けません。
{ sub func { return 2; } } my $ret = func();
サブルーチンは、スコープの影響を受けません。一見すると、funcは、スコープの外では、見えないものと思ってしまいがちですが、そうなりません。
サブルーチンの定義は、コンパイル時に、シンボルテーブルというものに登録されます。シンボルテーブルは、プログラムのどこからでも参照することができるため、サブルーチンも、プログラムのどこからでも参照できます。
サンプル
サブルーチンの定義はスコープの影響を受けないことを理解するサンプルです。
use strict; use warnings; # サブルーチンの定義とスコープ # サブルーチンは、スコープの影響を受けない。 { sub func { return 2; } } print "1: サブルーチンの定義は、スコープの影響を受けない。\n"; my $ret = func(); print "\$ret は、$ret です。\n";