関数リファレンスをクラスのメソッドとして使うmix-in

mix-inと呼んでよいものかどうかわかりませんが、とりあえずメモ。

use strict ;
use warnings ;
use Perl6::Say ;

my $subref = sub{
                  my $self = shift ;
                  $self->{msg} ;
} ;

say  MyClass->new->$subref  ;

package MyClass ;
use strict ;
use warnings ;

sub new{
    my $class = shift ;
    bless { msg => 'Hello ' . __PACKAGE__ } ,  $class ;

}
  • 実行結果
$ perl mokkori.pl 
Hello MyClass