print_nodes($data); sub print_nodes { my $data = shift; foreach my $node ( @{ $data->{node} } ) { print $node->{name} . ": " . $node->{text} . "\n"; if ( $node->{node} ) { print_nodes($node); } } }