メメメモモ

プログラミング、筋トレ、ゲーム、etc

Mojo::EventEmitter

emitは「放出する」という単語。
eventをemitだから、イベントを放出するモジュール。
例えば以下のように、イベントに対してコールバックを設定して使用するようなモジュールを作成できる。

my $tiger = Cat->new;
$tiger->on(
     roar => sub {
          my ($tiger, $times) = @_;
          say 'RAWR!' for 1 .. $times;
     }
);
$tiger->poke;

CatがMojo::EventEmitterで実装したクラスになる。

package Cat;
use Mojo::Base 'Mojo::EventEmitter';

sub poke {
    my $self = shift;
    $self->emit(roar => 3);
}

1;

のように、pokeを呼び出すとemitメソッドでroarイベントを起こすことができる。