カラクリスタ

「輝かしい青春」なんて失かった人のブログ

Perlで'&{}'をoverloadする

こんな感じのことをできるとしばらく前にConfig::Mergeのコード読んで知った。

package MyClass;

use overload
'&{}'       => sub { my $self = shift; return sub { $self->foo( @_ ) } },
fallback    => 1;

sub new { bless {}, shift }
sub bar { 'bar' }

package main;

my $obj = MyClass->new;

print $obj->bar; # 'bar'
print $obj->();  # 'bar'

FIXME