File Coverage

blib/lib/Acme/Dump/And/Dumper.pm
Criterion Covered Total %
statement 31 31 100.0
branch 4 6 66.6
condition n/a
subroutine 8 8 100.0
pod 1 1 100.0
total 44 46 95.6


line stmt bran cond sub pod time code
1             package Acme::Dump::And::Dumper;
2              
3 1     1   13016 use strict;
  1         2  
  1         32  
4 1     1   3 use warnings;
  1         1  
  1         76  
5              
6             our $VERSION = '1.001005'; # VERSION
7              
8             require Exporter;
9             our @ISA = qw/Exporter Data::Dumper/;
10             our @EXPORT_OK = @Data::Dumper::EXPORT_OK;
11             our @EXPORT = ( 'DnD', @Data::Dumper::EXPORT );
12              
13 1     1   480 use Data::Rmap;
  1         970  
  1         51  
14 1     1   5 use Scalar::Util qw/blessed refaddr/;
  1         1  
  1         37  
15 1     1   519 use Data::Dumper ( @Data::Dumper::EXPORT, @Data::Dumper::EXPORT_OK, );
  1         6095  
  1         73  
16 1     1   525 use Storable qw/dclone/;
  1         2249  
  1         187  
17             $Storable::Deparse = 1;
18              
19             sub DnD {
20 1     1 1 179 my @in = @_;
21              
22 1         1 my @out;
23 1         2 for my $data ( @in ) {
24 1         2 my $working_data = eval { dclone $data };
  1         85  
25 1 50       4 $working_data = $data
26             unless defined $working_data;
27              
28             rmap_all {
29 5     5   188 my $state = shift;
30 5 100       26 if ( defined blessed $_) {
31 2         3 delete $state->seen->{ refaddr $_ };
32 2         15 $_ = 'obj[' . ref($_) . ']';
33             }
34 1         12 } $working_data;
35              
36 1         39 push @out, Dumper $working_data;
37             }
38              
39 1 50       96 return wantarray ? @out : join '', @out;
40             }
41              
42             1;
43              
44             __END__