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 => \&suba, ##! B => \&subb, ##! } }; } 1;