こんな感じのことをできるとしばらく前に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'