X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FData%2FDumper%2FConcise%2FSugar.pm;h=f82754a249af945f1ceacfccb36c460034683c1e;hb=2566c738d28b5c6fd48615bd8a7a297d3e92cffd;hp=bbfdb6e1904753e99f425b383150033e195d40ed;hpb=7194c025550913190a5c82a91f80a64118949232;p=p5sagit%2FData-Dumper-Concise.git diff --git a/lib/Data/Dumper/Concise/Sugar.pm b/lib/Data/Dumper/Concise/Sugar.pm index bbfdb6e..f82754a 100644 --- a/lib/Data/Dumper/Concise/Sugar.pm +++ b/lib/Data/Dumper/Concise/Sugar.pm @@ -4,25 +4,46 @@ use 5.006; use Exporter (); use Data::Dumper::Concise (); -use Devel::ArgNames; BEGIN { @ISA = qw(Exporter) } -@EXPORT = qw($Dwarn Dwarn DwarnS DwarnL DwarnN); +@EXPORT = qw( + $Dwarn $DwarnN Dwarn DwarnS DwarnL DwarnN + $Ddie $DdieN Ddie DdieS DdieL DdieN DdieD +); sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) } our $Dwarn = \&Dwarn; +our $DwarnN = \&DwarnN; sub DwarnL { warn Data::Dumper::Concise::Dumper @_; @_ } sub DwarnS ($) { warn Data::Dumper::Concise::Dumper $_[0]; $_[0] } sub DwarnN ($) { - my $x = arg_names(); + require Devel::ArgNames; + my $x = Devel::ArgNames::arg_names(); warn(($x?$x:'(anon)') . ' => ' . Data::Dumper::Concise::Dumper $_[0]); $_[0] } +sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ } + +sub Ddie { DdieL(@_) if wantarray; DdieS($_[0]) } + +our $Ddie = \&Ddie; +our $DdieN = \&DdieN; + +sub DdieL { die Data::Dumper::Concise::Dumper @_ } + +sub DdieS ($) { die Data::Dumper::Concise::Dumper $_[0] } + +sub DdieN ($) { + require Devel::ArgNames; + my $x = Devel::ArgNames::arg_names(); + die(($x?$x:'(anon)') . ' => ' . Data::Dumper::Concise::Dumper $_[0]); +} + =head1 NAME Data::Dumper::Concise::Sugar - return Dwarn @return_value @@ -99,6 +120,22 @@ is equivalent to: warn Dumper($return); return $return; +If you want to format the output of your data structures, try DwarnF + + my ($a, $c) = DwarnF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy; + +is equivalent to: + + my @return = ($awesome, $cheesy); + warn DumperF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy; + return @return; + +If you want to immediately die after outputting the data structure, every +Dwarn subroutine has a paired Ddie version, so just replace the warn with die. +For example: + + DdieL 'foo', { bar => 'baz' }; + =head1 DESCRIPTION use Data::Dumper::Concise::Sugar; @@ -114,6 +151,10 @@ L, so see its docs for ways to make it do something else. $Dwarn = \&Dwarn +=head2 $DwarnN + + $DwarnN = \&DwarnN + =head2 DwarnL sub Dwarn { warn Data::Dumper::Concise::Dumper @_; @_ } @@ -126,6 +167,12 @@ L, so see its docs for ways to make it do something else. sub DwarnN { warn '$argname => ' . Data::Dumper::Concise::Dumper $_[0]; $_[0] } +B: this requires L to be installed. + +=head2 DwarnF + + sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ } + =head1 TIPS AND TRICKS =head2 global usage