in reply to sub return value in qq{}

You could always use printf / sprintf :

sub b{ return("bar"); } printf( qq{ monk magic against foo %s }, b() );