use strict; use warnings; package Blah; sub new { bless {}, shift } sub Foo { print "Foo\n"; } sub Bar { print "Bar\n"; } package main; my %Movement = ( foo => 'Foo', bar => 'Bar', ); my $foo = Blah->new; foreach my $key (keys %Movement) { my $func = $Movement{$key}; $foo->$func; } #### foreach my $key (keys %Movement) { $foo->$Movement{$key}; }