use strict; use Data::Dumper; my @DATA = ; sub nextgroup { my @ret; while(1) { return @ret unless @DATA; chomp $DATA[0]; local $_ = $DATA[0]; /^(\+*)/; my $tiefe = length($1); if ($tiefe == $_[0]) { push @ret, { descr => shift @DATA, unter => [nextgroup($_[0] + 1)] }; } elsif ($tiefe > $_[0]) { die "geht ja wohl nich"; } else { return @ret; } } } my @baum = nextgroup (0); print Dumper(\@baum); #### hier muss _ _ D A T A _ _ stehen, aber das Forum will das nicht in einem wort Software - Einführungstext - Kompletter Text +Windows - Einführungstext - Kompletter Text ++Software - Einführungstext - Kompletter Text +++Grafikprogramme - Einführungstext - Kompletter Text +++Sicherheitsprogramme - Einführungstext - Kompletter Text ++Games - Einführungstext - Kompletter Text +Linux - Einführungstext - Kompletter Text +MacOS - Einführungstext - Kompletter Text +DOS - Einführungstext - Kompletter Text Hardware - Einführungstext - Kompletter Text +Hardware - Einführungstext - Kompletter Text ++Mainboard - Einführungstext - Kompletter Text ++Grafikkarte - Einführungstext - Kompletter Text +++AGP-Karte - Einführungstext - Kompletter Text +++PCI-Karte - Einführungstext - Kompletter Text +Zubehör - Einführungstext - Kompletter Text