in reply to Weird function calling...

I'm not sure I like this any better (only because it makes you name $foo twice), but it works:
foreach my $key (keys %Movement) { $foo->can($Movement{$key})->($foo); } # Update: this works too: $foo->${\$Movement{$key}};
Or you can iterate through the values of Movement, or use each if you need both keys and values (neither of which work if you want to sort the keys)...