release 2.010
[p5sagit/Data-Dumper-Concise.git] / lib / Data / Dumper / Concise.pm
CommitLineData
6d2a9a35 1package Data::Dumper::Concise;
2
3use 5.006;
4
c8b31788 5$VERSION = '2.010';
6d2a9a35 6
7require Exporter;
8require Data::Dumper;
9
10BEGIN { @ISA = qw(Exporter) }
11
12@EXPORT = qw(Dumper);
13
6d2a9a35 14sub Dumper {
6d2a9a35 15 my $dd = Data::Dumper->new([]);
16 $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1);
e946236e 17 return $dd->Values([ @_ ])->Dump;
6d2a9a35 18}
19
20=head1 NAME
21
22Data::Dumper::Concise - Less indentation and newlines plus sub deparsing
23
24=head1 SYNOPSIS
25
26 use Data::Dumper::Concise;
27
28 warn Dumper($var);
29
30is equivalent to:
31
32 use Data::Dumper;
33 {
34 local $Data::Dumper::Terse = 1;
35 local $Data::Dumper::Indent = 1;
36 local $Data::Dumper::Useqq = 1;
37 local $Data::Dumper::Deparse = 1;
38 local $Data::Dumper::Quotekeys = 0;
39 local $Data::Dumper::Sortkeys = 1;
40 warn Dumper($var);
41 }
42
6d2a9a35 43So for the structure:
44
45 { foo => "bar\nbaz", quux => sub { "fleem" } };
46
47Data::Dumper::Concise will give you:
48
49 {
50 foo => "bar\nbaz",
51 quux => sub {
52 use warnings;
53 use strict 'refs';
54 'fleem';
55 }
56 }
57
58instead of the default Data::Dumper output:
59
60 $VAR1 = {
9469b5b0 61 'quux' => sub { "DUMMY" },
62 'foo' => 'bar
6d2a9a35 63 baz'
64 };
65
66(note the tab indentation, oh joy ...)
67
68=head1 DESCRIPTION
69
70This module always exports a single function, Dumper, which can be called
39d55feb 71with an array of values to dump those values.
6d2a9a35 72
73It exists, fundamentally, as a convenient way to reproduce a set of Dumper
74options that we've found ourselves using across large numbers of applications,
75primarily for debugging output.
76
73939723 77The principle guiding theme is "all the concision you can get while still
78having a useful dump and not doing anything cleverer than setting Data::Dumper
79options" - it's been pointed out to us that Data::Dump::Streamer can produce
80shorter output with less lines of code. We know. This is simpler and we've
81never seen it segfault. But for complex/weird structures, it generally rocks.
82You should use it as well, when Concise is underkill. We do.
83
6d2a9a35 84Why is deparsing on when the aim is concision? Because you often want to know
85what subroutine refs you have when debugging and because if you were planning
86to eval this back in you probably wanted to remove subrefs first and add them
87back in a custom way anyway. Note that this -does- force using the pure perl
88Dumper rather than the XS one, but I've never in my life seen Data::Dumper
89show up in a profile so "who cares?".
90
73939723 91=head1 BUT BUT BUT ...
92
93Yes, we know. Consider this module in the ::Tiny spirit and feel free to
94write a Data::Dumper::Concise::ButWithExtraTwiddlyBits if it makes you
95happy. Then tell us so we can add it to the see also section.
96
42f8d5be 97=head1 SUGARY SYNTAX
98
99This package also provides:
100
101L<Data::Dumper::Concise::Sugar> - provides Dwarn and DwarnS convenience functions
102
103L<Devel::Dwarn> - shorter form for Data::Dumper::Concise::Sugar
104
73939723 105=head1 SEE ALSO
106
107We use for some purposes, and dearly love, the following alternatives:
108
109L<Data::Dump> - prettiness oriented but not amazingly configurable
110
111L<Data::Dump::Streamer> - brilliant. beautiful. insane. extensive. excessive. try it.
112
113L<JSON::XS> - no, really. If it's just plain data, JSON is a great option.
114
6d2a9a35 115=head1 AUTHOR
116
42f8d5be 117mst - Matt S. Trout <mst@shadowcat.co.uk>
6d2a9a35 118
119=head1 CONTRIBUTORS
120
42f8d5be 121frew - Arthur Axel "fREW" Schmidt <frioux@gmail.com>
6d2a9a35 122
123=head1 COPYRIGHT
124
39d55feb 125Copyright (c) 2010 the Data::Dumper::Concise L</AUTHOR> and L</CONTRIBUTORS>
6d2a9a35 126as listed above.
127
128=head1 LICENSE
129
130This library is free software and may be distributed under the same terms
131as perl itself.
132
133=cut
134
1351;