XXX(3pm) | User Contributed Perl Documentation | XXX(3pm) |
XXX - See Your Data in the Nude
This document describes XXX version 0.38.
use XXX; XXX my $dog = Dog->new({has => ['fleas', 'style']}); my $dog = XXX Dog->new({has => ['fleas', 'style']}); my $dog = Dog->new(XXX {has => ['fleas', 'style']}); my $dog = Dog->new({XXX has => ['fleas', 'style']}); my $dog = Dog->new({has => XXX ['fleas', 'style']}); my $dog = Dog->new({has => [XXX 'fleas', 'style']});
"XXX.pm" exports a function
called "XXX" that you can put just about
anywhere in your Perl code to make it die with a YAML dump of the
arguments to its right.
The charm of XXX-debugging is that it is easy to type, rarely requires parens and stands out visually so that you remember to remove it.
"XXX.pm" also exports
"WWW",
"YYY" and
"ZZZ" which do similar
debugging things.
NOTE: If you use WWW with Test::More, it will "diag()" rather than "warn()".
mnemonic: W for warn
mnemonic: XXX == Death, Nudity
NOTE: If you use YYY with Test::More, it will
"note()" rather than
"print()".
mnemonic: YYY == Why Why Why??? or YAML YAML YAML
mnemonic: You should confess all your sins before you sleep. zzzzzzzz
In the debugger session you will be able to both read and modify all variables including lexical variables.
mnemonic: Debug, Debug, Debug!
If you "export PERL5OPT='-MXXX=global'" in your shell environment, then "XXX" will be always be loaded, and all the functions will also be exported into the "main" namespace. That means you can call "XXX" from any package with "::XXX" (since "::" is a synonym for "main::").
Also "XXX" will be exported as $::XXX which you can use like this:
$self->foo->$::WWW->bar;
This will warn a YAML dump of $self, returning $self so that "bar" will be called correctly.
By default, "XXX" uses YAML::PP to dump your data. You can change this like so:
use XXX -with => 'Data::Dumper'; use XXX -with => 'Data::Dump'; use XXX -with => 'Data::Dump::Color'; use XXX -with => 'YAML'; use XXX -with => 'YAML::XS'; use XXX -with => 'YAML::SomeOtherYamlModule'; use XXX -with => 'JSON::Color'; use XXX -with => 'JSON::SomeOtherJsonModule';
You can also use the environment variable "PERL_XXX_DUMPER" to set the module, for example;
PERL_XXX_DUMPER=JSON::Color perl script.pl PERL_XXX_DUMPER=YAML::PP::Highlight perl script.pl
Only modules with names beginning with 'YAML' or 'JSON', and the Data::Dumper, Data::Dump, and Data::Dump::Color modules are supported.
If you need to load XXX with "require", you can set the dumper module with the $XXX::DumpModule global variable.
require XXX; $XXX::DumpModule = 'YAML::Syck'; XXX::XXX($variable);
If you call a debugging function that calls "XXX" for you, "XXX" will print the wrong file and line number. To force "XXX" to skip a package in the call stack, just define the "XXX_skip" constant like this:
package MyDebugger; use constant XXX_skip => 1; sub debug { require XXX; XXX::XXX(@_); }
Now calls to MyDebugger::debug will print the file name you called it from, not from MyDebugger itself.
Ingy döt Net <ingy@cpan.org>
Copyright 2006-2021. Ingy döt Net.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
2021-09-12 | perl v5.32.1 |