in reply to Is there a clever way to interpolate a method?

When interpolation gets messy, and it often does, I reach for sprintf.
my $string = sprintf( q{start %s end}, $obj->middle(type => q{text}), );
Perhaps your method could take an argument, e.g. a hash, and return what it is you want rather than go through hoops to get at it.