#!/usr/bin/perl
use strict; use warnings; use Data::Dumper;
use Foo;
my $help = 'Please display this message';
my $foo = Foo->new;
my $subref = $foo->subref;
foreach my $pos (@{$subref->{order}}){
print "POS: $pos\n";
my $sub = $subref->{dispatch}->{$pos};
print Dumper($sub);
&$sub($help);
}
####
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;
##
##
POS: A
$VAR1 = sub { "DUMMY" };
Message is:
POS: B
$VAR1 = sub { "DUMMY" };