Create Ddie for die'ing output
[p5sagit/Data-Dumper-Concise.git] / lib / Devel / Dwarn.pm
CommitLineData
60e18490 1package Devel::Dwarn;
2
2570b7be 3use Data::Dumper::Concise::Sugar;
60e18490 4
d71b0a31 5sub import {
6 Data::Dumper::Concise::Sugar->export_to_level(1, @_);
7}
60e18490 8
dc06d25b 9=head1 NAME
10
11Devel::Dwarn - return Dwarn @return_value
12
13=head1 SYNOPSIS
9469b5b0 14
15 use Devel::Dwarn;
dc06d25b 16
17 return Dwarn some_call(...)
18
19is equivalent to:
20
21 use Data::Dumper::Concise;
22
13b908a8 23 if (wantarray) {
24 my @return = some_call(...);
25 warn Dumper(@return);
26 return @return;
27 } else {
28 my $return = some_call(...);
29 warn Dumper($return);
30 return $return;
31 }
dc06d25b 32
33but shorter. If you need to force scalar context on the value,
34
9469b5b0 35 use Devel::Dwarn;
dc06d25b 36
37 return DwarnS some_call(...)
38
39is equivalent to:
40
41 use Data::Dumper::Concise;
42
43 my $return = some_call(...);
44 warn Dumper($return);
45 return $return;
46
13b908a8 47If you need to force list context on the value,
48
9469b5b0 49 use Devel::Dwarn;
13b908a8 50
51 return DwarnL some_call(...)
52
53is equivalent to:
54
55 use Data::Dumper::Concise;
56
57 my @return = some_call(...);
58 warn Dumper(@return);
59 return @return;
60
9469b5b0 61If you want to label your output, try DwarnN
62
63 use Devel::Dwarn;
64
65 return DwarnN $foo
66
67is equivalent to:
68
69 use Data::Dumper::Concise;
70
71 my @return = some_call(...);
72 warn '$foo => ' . Dumper(@return);
73 return @return;
74
7194c025 75If you want to output a reference returned by a method easily, try $Dwarn
76
77 $foo->bar->{baz}->$Dwarn
78
79is equivalent to:
80
81 my $return = $foo->bar->{baz};
82 warn Dumper($return);
83 return $return;
84
2566c738 85If you want to immediately die after outputting the data structure, every
86Dwarn subroutine has a paired Ddie version, so just replace the warn with die.
87For example:
88
89 DdieL 'foo', { bar => 'baz' };
90
13b908a8 91=head1 TIPS AND TRICKS
92
93=head2 global usage
94
95Instead of always just doing:
96
97 use Devel::Dwarn;
98
99 Dwarn ...
100
101We tend to do:
102
103 perl -MDevel::Dwarn foo.pl
104
105(and then in the perl code:)
106
107 ::Dwarn ...
108
109That way, if you leave them in and run without the C<< use Devel::Dwarn >>
110the program will fail to compile and you are less likely to check it in by
111accident. Furthmore it allows that much less friction to add debug messages.
112
113=head2 method chaining
114
115One trick which is useful when doing method chaining is the following:
01223632 116
117 my $foo = Bar->new;
118 $foo->bar->baz->Devel::Dwarn::DwarnS->biff;
119
120which is the same as:
121
122 my $foo = Bar->new;
123 (DwarnS $foo->bar->baz)->biff;
124
dc06d25b 125=head1 SEE ALSO
126
127This module is really just a shortcut for L<Data::Dumper::Concise::Sugar>, check
128it out for more complete documentation.
129
130=cut
131
60e18490 1321;