Thanks for the interesting pointer, I guess this won't be solved gracefully until the advent of Perl6. I should have mentioned that I'm using Perl 5.6.1 on Debian stable, for which I'm sure B::Bytecode is not intended :)
Running the subroutine source through Data::Dumper is the plan for production, just my mind wouldn't let go of the idea since its quite easy in Python.