sub traverse { my $element = $_[0] ; if (Scalar::Util::blessed (${element})) { if (go_ahead(${element})) { my @contents = ${element}->content_refs_list() ; print "Before: ", @{contents}, "\n\n" ; for my $child (@contents) { traverse (${${child}}) ; print "Middle: ", ${${child}}, "\n\n" ; } print "After: ", @{contents}, "\n\n" ; } } else { print "Processing a string: " ; ${element} = curly_quotes(${element}) ; print ${element}, "\n\n" ; } }