in reply to Data::Dumper: What the Cabal doesn't want you to know.

Ad 1:
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my $struct = [{a => 12, b => 14}, {arr => [5, 6, 7]}]; $Data::Dumper::Sortkeys = 1; my $dump = Dumper($struct); print $dump; my $copy = eval "my $dump"; print Dumper $copy;

If your structure contains references into itself or code refs, you also need $Data::Dumper::Purity and $Data::Dumper::Deparse. The second one can introduce bugs.

map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]