- 変数に無名サブルーチン・サブルーチンリファレンスを格納することで、同じコードで振る舞いを変えること(ポリモーフィズム)が可能。
- 振る舞いを変えるには、if文で分岐する方法とハッシュを利用した方法があるが、ハッシュの方が美しいコードだと思う。
- 無名サブルーチンを型グロブに格納すると、名前付きで定義したサブルーチンのように使用できる。別のモジュールのサブルーチンを再定義することもできる。
#!/us/bin/perl
use strict;
use warnings;
package My::Module;
sub say {
print __PACKAGE__, "\n";
}
package main;
My::Module::say();
*My::Module::say = sub {
print __PACKAGE__, "\n";
};
My::Module::say();
- シンボリックリファレンスは、文字列名を変数名と解釈する。
#!/us/bin/perl
$val = "sym_ref";
${"$val"} = "30";
print $sym_ref, "\n";
print $$val , "\n";
- AutoSplitは、useでモジュールをロードする時にコンパイルするのではなく、サブルーチンが呼び出されたタイミングでコンパイルする。
- AutoLoaderのAUTOLOADのみをロードし、サブルーチンは__END__の後に定義する。
package My::Module;
use AutoLoader 'AUTOLOAD';
1;