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