Unfortunately your idea doesn't work, at least on 5.8.4 on debian or 5.8.3 on win32. I think this is just an example of the constructs getting too complicated for the perl parser to handle, but I'm not sure exactly why. The work around is simple:
my $base = 'foo_';
my $obj = new obj;
for(qw/baz qux stuff/)
{
my $meth = "${base}_$_";
$obj->$meth;
}
Which works perfectly.
I find it a little odd that the
$obj->"meth" form doesn't work, since the reverse works perfectly, at least for packages:
"package"->$meth