... my @todo = @{$data->{data}}; # unsere Todo-liste als Stack while (@todo) { my $data = pop @todo; # eins runter print "id: ", $data->{id}, "\n"; if (exists $data->{data}) { # hier weiss ich nicht, was XML::Simple bei nur einem vorhandenen data macht, mal ausprobieren obs klappt push @todo, @{$data->{data}}; # die neuen datas auf unsere todo-liste } }