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