No such thing as a small change | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
There is another method to get the name other than pad walking or name passing. I used this method in the 11 year old CGI::Ex::Dump module (looks like the POD for that module is rather lackluster - guess I should update it after 11 years). We've used a variant of this for some time.
Whenever we debug we also like to see the line location - once we have parsed for the line location it is trivial to open the code and look for that line and do a very barebones parse. Apologist notes: This may not be academically correct, but we don't care - we're debugging. The output will also not be right if the source file changes, or the debug line is too complex - but again I don't care about a perfect solution - I want a fast good enough solution. Maybe someday we'll update it to a padwalker, but it is really rather trivial as it is. Here is a sample: The actual dumping is done by Data::Dumper, so setting all Data::Dumper options will control the output. It should be easy enough to replace the output with Data::Dump, or Data::Dumper::Simple, or even JSON or YAML, or any of the other 100 ways to dump out data. We used Data::Dumper because 11 years ago it was what there was. Internally we use a variation of this codebase called simply "Debug". By default debug goes to STDOUT, but we have variants called debug_warn that goes to STDERR and a debug_dlog variant that will go directly to our perl based system logger.
my @a=qw(random brilliant braindead); print $a[rand(@a)];
In reply to Re: dumping variables automatically with their name?
by Rhandom
|
|