Name
XXX - See Your Data in the Nude
Synopsis
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']});
Description
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.
Functions
- WWW
-
WWW will warn a dump of its arguments, and then return the original arguments. This means you can stick it in the middle of expressions.
NOTE: If you use WWW with Test::More, it will
diag()
rather thanwarn()
.mnemonic: W for warn
- XXX
-
XXX will die with a dump of its arguments.
mnemonic: XXX == Death, Nudity
- YYY
-
YYY will print a dump of its arguments, and then return the original arguments. This means you can stick it in the middle of expressions.
NOTE: If you use YYY with Test::More, it will
note()
rather thanprint()
.mnemonic: YYY == Why Why Why??? or YAML YAML YAML
- ZZZ
-
ZZZ will Carp::confess a dump of its arguments.
mnemonic: You should confess all your sins before you sleep. zzzzzzzz
Configuration
By default, XXX uses YAML.pm to dump your data. You can change this like so:
use XXX -with => 'Data::Dumper';
use XXX -with => 'YAML::XS';
use XXX -with => 'YAML::SomeOtherYamlModule';
Only modules with names beginning with 'YAML' and the Data::Dumper module 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);
Stack Trace Level
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.
Author
Ingy döt Net <ingy@cpan.org>
Copyright and License
Copyright (c) 2006-2014. 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
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 95:
Non-ASCII character seen before =encoding in 'döt'. Assuming UTF-8