diff -ruN Data-Dump-1.22/lib/Data/Dump.pm Data-Dump-1.22-new/lib/Data/Dump.pm --- Data-Dump-1.22/lib/Data/Dump.pm 2013-05-10 03:32:23.000000000 -0700 +++ Data-Dump-1.22-new/lib/Data/Dump.pm 2013-07-21 17:25:59.562500000 -0700 @@ -124,6 +124,7 @@ my $out; my $comment; my $hide_keys; + my $da_keys; if (@FILTERS) { my $pself = ""; $pself = fullname("self", [@$idx[$pidx..(@$idx - 1)]]) if $pclass; @@ -131,6 +132,9 @@ my @bless; for my $filter (@FILTERS) { if (my $f = $filter->($ctx, $rval)) { + if (my $v = $f->{da_keys}) { + warn "\ngrrrrrrr da_keys $v\n\n "; $da_keys = $v; + } if (my $v = $f->{object}) { local @FILTERS; $out = _dump($v, $name, $idx, 1); @@ -298,6 +302,23 @@ $text_keys++, last unless /^[-+]?(?:0|[1-9]\d*)(?:\.\d+)?\z/; } + if ( $da_keys ) { + warn "\ngrrrrrrrrr orig_keys @orig_keys\n\n "; + if( 'CODE' eq ref $da_keys){ + @orig_keys = $da_keys->( $text_keys, \@orig_keys ); + warn "\ngrrrrrrrrr orig_keys @orig_keys\n\n "; + } else { + #$da_keys->( $text_keys, \@orig_keys ); + } + } else { + if ($text_keys) { + @orig_keys = sort { lc($a) cmp lc($b) } @orig_keys; + } + else { + @orig_keys = sort { $a <=> $b } @orig_keys; + } + } + if ($text_keys) { @orig_keys = sort { lc($a) cmp lc($b) } @orig_keys; }