package Foo; use strict; use warnings; sub new { bless {}, shift; } sub suba { my $self = shift; my $param = shift || ''; print "Message is: $param\n"; } sub subb { return; } sub subref { my $self = shift; return { order => ['A', 'B'], dispatch => { A => sub { $self->suba }, B => sub { $self->subb }, } }; } 1;