use Data::BFDump qw(BFDump); my @dogs = ( 'Fido', 'Wags' ); my %kennel = ( First => \$dogs[0], Second => \$dogs[1], ); $dogs[2] = \%kennel; my $mutts = \%kennel; print "BFDump(\\\@dogs, \\\%kennel, \$mutts);\n"; print BFDump(\@dogs, \%kennel, $mutts),"\n\n"; print "BFDump(\\\%kennel, \\\@dogs, \$mutts);\n"; print BFDump(\%kennel, \@dogs, $mutts),"\n"; __END__ BFDump(\@dogs, \%kennel, $mutts); do { my $RT_ARRAY = [ 'Fido', 'Wags', {} ]; my $RT_HASH = { First => \do { my $v = 'Fido' }, Second => \do { my $v = 'Wags' } }; $RT_ARRAY->[2] = $RT_HASH; ( $RT_ARRAY, $RT_HASH, $RT_HASH ) } BFDump(\%kennel, \@dogs, $mutts); do { my $RT_HASH = { First => \do { my $v = 'Fido' }, Second => \do { my $v = 'Wags' } }; my $RT_ARRAY = [ 'Fido', 'Wags', $RT_HASH ]; ( $RT_HASH, $RT_ARRAY, $RT_HASH ) }