++ed by:

1 PAUSE user

💯 Doug Bell


Beam::Emitter - Role for event emitting classes


    package My::Emitter;

    use Moo;
    with 'Beam::Emitter';

    sub do_something {
        my ( $self ) = @_;

        # Give event listeners a chance to prevent something
        my $event = $self->emit( "before_something" );
        return if $event->is_default_stopped;

        # ... do something

        # Notify listeners we're done with something
        $self->emit( 'after_something' );


This role is used by classes that want to emit Beam::Event objects to subscribers.


subscribe ( event_name, subref )

on ( event_name, subref )

Subscribe to an event from this object. event_name is the name of the event. subref is a subroutine reference that takes a single argument, the Beam::Event that is being emitted.

un ( event_name [, subref ] )

unsubscribe ( event_name [, subref ] )

Unsubscribe from an event. event_name is the name of the event. subref is the single listener subref to be removed. If no subref is given, will remove all listeners for this event.

emit ( name, event_args )

Emit an event with the given name. event_args is a list of name => value pairs to give to the Beam::Event object.

Use the class key in event_args to specify a different Event class.