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 DwarnF
+ $Ddie $DdieN Ddie DdieS DdieL DdieN DdieD
+);
-sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) }
+sub Dwarn { DwarnL(@_); return wantarray ? @_ : $_[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(@_); return wantarray ? @_ : $_[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
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;
$Dwarn = \&Dwarn
+=head2 $DwarnN
+
+ $DwarnN = \&DwarnN
+
=head2 DwarnL
sub Dwarn { warn Data::Dumper::Concise::Dumper @_; @_ }
sub DwarnN { warn '$argname => ' . Data::Dumper::Concise::Dumper $_[0]; $_[0] }
+B<Note>: this requires L<Devel::ArgNames> to be installed.
+
+=head2 DwarnF
+
+ sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ }
+
=head1 TIPS AND TRICKS
=head2 global usage