in reply to evaling dumped cyclic structures

No, it is because in effect, you execute the following:
undef $old; $old = { 'child' => { 'parent' => $old, # !!! 'name' => 'bob jr' }, 'name' => 'bob' };

Obviously, the parent key is assigned the new value of $old, which is, well, undef.

Update: You want to check the Data::Dumper POD for the $Data::Dumper::Purity setting.

#!/usr/bin/perl -w use strict; use Data::Dumper; my $old = { name => "bob", child => { name => "bob jr", } }; $old->{child}{parent} = $old; $Data::Dumper::Purity = 1; print Data::Dumper->Dump([$old], ['$old']); __END__ $old = { 'child' => { 'parent' => {}, 'name' => 'bob jr' }, 'name' => 'bob' }; $old->{'child'}{'parent'} = $old;
Update2: it appears valdez snuck the same point in as I was looking up the POD myself.

Makeshifts last the longest.