X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDevel%2FDwarn.pm;h=8211cf186fe6068b83287ebb116794d65643c0ee;hb=refs%2Ftags%2Fv2.001;hp=9029cc0d3672cc098e2c8e66e2c7b0350931313b;hpb=dc06d25b10a184f408bc56249d2c24e7ec4dacdd;p=p5sagit%2FData-Dumper-Concise.git diff --git a/lib/Devel/Dwarn.pm b/lib/Devel/Dwarn.pm index 9029cc0..8211cf1 100644 --- a/lib/Devel/Dwarn.pm +++ b/lib/Devel/Dwarn.pm @@ -1,6 +1,6 @@ package Devel::Dwarn; -use Data::Dumper::Concise::Sugar (); +use Data::Dumper::Concise::Sugar; sub import { Data::Dumper::Concise::Sugar->export_to_level(1, @_); @@ -20,9 +20,15 @@ is equivalent to: use Data::Dumper::Concise; - my @return = some_call(...); - warn Dumper(@return); - return @return; + if (wantarray) { + my @return = some_call(...); + warn Dumper(@return); + return @return; + } else { + my $return = some_call(...); + warn Dumper($return); + return $return; + } but shorter. If you need to force scalar context on the value, @@ -38,6 +44,68 @@ is equivalent to: warn Dumper($return); return $return; +If you need to force list context on the value, + + use Devel::Dwarn; + + return DwarnL some_call(...) + +is equivalent to: + + use Data::Dumper::Concise; + + my @return = some_call(...); + warn Dumper(@return); + return @return; + +If you want to label your output, try DwarnN + + use Devel::Dwarn; + + return DwarnN $foo + +is equivalent to: + + use Data::Dumper::Concise; + + my @return = some_call(...); + warn '$foo => ' . Dumper(@return); + return @return; + +=head1 TIPS AND TRICKS + +=head2 global usage + +Instead of always just doing: + + use Devel::Dwarn; + + Dwarn ... + +We tend to do: + + perl -MDevel::Dwarn foo.pl + +(and then in the perl code:) + + ::Dwarn ... + +That way, if you leave them in and run without the C<< use Devel::Dwarn >> +the program will fail to compile and you are less likely to check it in by +accident. Furthmore it allows that much less friction to add debug messages. + +=head2 method chaining + +One trick which is useful when doing method chaining is the following: + + my $foo = Bar->new; + $foo->bar->baz->Devel::Dwarn::DwarnS->biff; + +which is the same as: + + my $foo = Bar->new; + (DwarnS $foo->bar->baz)->biff; + =head1 SEE ALSO This module is really just a shortcut for L, check