Perl 5.15.2 released!
Perlの開発版である5.15.2がリリースされました。
このバージョンで組み込み関数のサブルーチンリファレンスが取れるようになっています。
use 5.15.2; # automatically turns on strict my $time = \&CORE::time; say $time->(); # 1313908276
また、__FILE__と__LINE__がtime()同様引数をとらない組み込み関数として解釈されるようになったので、以下のようなことも可能です。
use 5.15.2; # automatically turns on strict my $file= \&CORE::__FILE__; say $file->(); # foo.pl
ただし組み込み関数のリファレンスは以下のような制約があります。
- 引数を取る関数はサブルーチンリファレンスを直接呼ぶことはできない
- かならずコンパイル時に型グロブに代入してプロトタイプを有効にしなければならない
- リファレンスをとれる関数はオーバーライドできるものに限る
- printやgrepなどのリファレンスを得ることはできない
なので、実際には組み込み関数に別名をつけることができるということくらいしかできません。おそらくこれは、組み込み関数をサブルーチンの差をなくして余計な組み込み関数をモジュールに追い出すという目的があるのだと思われます。
いずれにせよ面白い機能ですね。
See also: perldelta for 5.15.2