in reply to calling methods using a variable

If you trust that someone isn't going to hack your command array, you can do
foreach $command( @commands ) { eval '$g->' . $command; die $@ if $@; }