#!/usr/bin/perl use strict; my %found = ( start => ["a", "b", "d", "g"], a => ["c","e"], b => [], c => ["f"], d => ["e"], e => [], f => [], g => [], ); print_tree('start', ''); sub print_tree{ my ($sub, $tab) = @_; foreach (@{$found{$sub}}){ print "$tab$found{$sub}[$_]\n"; $tab .= "\t"; print_tree($found{$sub}[$_], $tab); } } #### > Executing: C:\PROGRAM FILES\CONTEXT\ConExec.exe "c:\perl\bin\perl.exe" "subtest.pl" a c f c f a c f c f a c f c f a c f c f > Execution finished. #### a c f e b d e g