logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

XXX - See Your Data in the Nude

Author

       Ingy döt Net <ingy@cpan.org>

Configuration

       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);

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 than "warn()".

           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 than
                 "print()".

           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

       "DDD"
           "DDD"  will start an interactive debugger session using the "Enbugger" module. By default it will use
           the Perl debugger, but you can switch to the fancier Devel::Trepan debugger by setting the enviroment
           variable "PERL_XXX_DEBUGGER=trepan".

           In the debugger session you will be able to both read and  modify  all  variables  including  lexical
           variables.

           mnemonic: Debug, Debug, Debug!

Name

       XXX - See Your Data in the Nude

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.

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']});

Use Xxx Without "Use Xxx;"

       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.

Version

       This document describes XXX version 0.38.

See Also