sub traverse { for my $element (@_) { if (Scalar::Util::blessed ($element)) { if (go_ahead($element)) { my @contents = $element->content_list() ; print "Before: ", @contents, "\n\n" ; traverse(@contents) ; print "After: ", @contents, "\n\n" ; $element->detach_content() ; $element->push_content (@contents) ; } } else { print "Processing a string: " ; $element = curly_quotes($element) ; print $element, "\n\n" ; } } }