first cut
[p5sagit/Data-Dumper-Concise.git] / lib / Data / Dumper / Concise.pm
CommitLineData
6d2a9a35 1package Data::Dumper::Concise;
2
3use 5.006;
4
5$VERSION = '1.000';
6
7require Exporter;
8require Data::Dumper;
9
10BEGIN { @ISA = qw(Exporter) }
11
12@EXPORT = qw(Dumper);
13
14my $USAGE = 'Dumper() to get an object or Dumper($ref) to dump a reference please';
15
16sub Dumper {
17 die $USAGE if @_ > 1;
18 my $dd = Data::Dumper->new([]);
19 $dd->Terse(1)->Indent(1)->Useqq(1)->Deparse(1)->Quotekeys(0)->Sortkeys(1);
20 return $dd unless @_;
21 my $ref = $_[0];
22 die $USAGE unless ref($ref);
23 return $dd->Values([ $ref ])->Dump;
24}
25
26=head1 NAME
27
28Data::Dumper::Concise - Less indentation and newlines plus sub deparsing
29
30=head1 SYNOPSIS
31
32 use Data::Dumper::Concise;
33
34 warn Dumper($var);
35
36is equivalent to:
37
38 use Data::Dumper;
39 {
40 local $Data::Dumper::Terse = 1;
41 local $Data::Dumper::Indent = 1;
42 local $Data::Dumper::Useqq = 1;
43 local $Data::Dumper::Deparse = 1;
44 local $Data::Dumper::Quotekeys = 0;
45 local $Data::Dumper::Sortkeys = 1;
46 warn Dumper($var);
47 }
48
49whereas
50
51 my $dd = Dumper;
52
53is equivalent to:
54
55 my $dd = Data::Dumper->new([])
56 ->Terse(1)
57 ->Indent(1)
58 ->Useqq(1)
59 ->Deparse(1)
60 ->Quotekeys(0)
61 ->Sortkeys(1);
62
63So for the structure:
64
65 { foo => "bar\nbaz", quux => sub { "fleem" } };
66
67Data::Dumper::Concise will give you:
68
69 {
70 foo => "bar\nbaz",
71 quux => sub {
72 use warnings;
73 use strict 'refs';
74 'fleem';
75 }
76 }
77
78instead of the default Data::Dumper output:
79
80 $VAR1 = {
81 'quux' => sub { "DUMMY" },
82 'foo' => 'bar
83 baz'
84 };
85
86(note the tab indentation, oh joy ...)
87
88=head1 DESCRIPTION
89
90This module always exports a single function, Dumper, which can be called
91with a single reference value to dump that value or with no arguments to
92return the Data::Dumper object it's created.
93
94It exists, fundamentally, as a convenient way to reproduce a set of Dumper
95options that we've found ourselves using across large numbers of applications,
96primarily for debugging output.
97
98Why is deparsing on when the aim is concision? Because you often want to know
99what subroutine refs you have when debugging and because if you were planning
100to eval this back in you probably wanted to remove subrefs first and add them
101back in a custom way anyway. Note that this -does- force using the pure perl
102Dumper rather than the XS one, but I've never in my life seen Data::Dumper
103show up in a profile so "who cares?".
104
105=head1 AUTHOR
106
107Matt S. Trout <mst@shadowcat.co.uk>
108
109=head1 CONTRIBUTORS
110
111None required yet. Maybe this module is perfect (hahahahaha ...).
112
113=head1 COPYRIGHT
114
115Copyright (c) 2009 the Data::Dumper::Concise L</AUTHOR> and L</CONTRIBUTORS>
116as listed above.
117
118=head1 LICENSE
119
120This library is free software and may be distributed under the same terms
121as perl itself.
122
123=cut
124
1251;