In this form, each event is an anonymous subref defined at or before creating the session.

POE::Session->create(
  inline_states => {
    _start => sub {
      my ($kernel) = @_[KERNEL];
      $kernel->alias_add($alias);
      $heap->{reg} = [];
    },
    xmit => sub {
      my ($kernel, $heap, $something) = @_[KERNEL, HEAP, ARG0];
      foreach my $s (@{$heap->{reg}}) {
        $kernel->post(@$s, $something);
      }
      }
      join => sub {
      my ($kernel, $heap, $something) = @_[KERNEL, HEAP, ARG0];
      push @{$heap->{reg}}, $something;
      }
      split = sub {
      my ($kernel, $heap, $something) = @_[KERNEL, HEAP, ARG0];
      $heap->{reg} =
        [grep { $_->[0] ne $something->[0] or $_->[1] ne $something->[1] }
          $something];
      return;
      }
  }
);

This type of event would be good for small "glue" sessions that just interface POE with a worker object.

POE::Session->create(
  inline_states => {
    question => sub {
      my ($kernel, $heap, $back, $question) = @_[KERNEL, HEAP, ARG0, ARG1];
      my $ret = $heap->{worker}->question($question);
      $kernel->post($_[SENDER], $back, $ret);
    },
  }
);

Advantages:

Disadvantages :

See also : /Inline Subrefs, /Package Methods, /Object Methods