#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %tree=(); # baum erstellen while(my $line=) { chomp($line); $line=~s/^\s+//; $line=~s/\s+$//; my @elm=split(/\s+/,$line); my $ref=\\%tree; $ref=\$$ref->{$_} for(@elm); $$ref={} unless($$ref); } # baum darstellen print create(\%tree); sub create { my $tree=shift; my $deep=shift || ''; my $line=shift || []; my $ret=''; for my $key (sort keys(%$tree)) { my @in=(@$line,$key); my $ref=$tree->{$key}; if(keys(%$ref)) { $ret.=qq($deep+@in\n); $ret.=create($ref,"$deep ",\@in); chomp($ret); $ret.="\n"; } else { $ret.="$deep@in\n"; } } return $ret; } __DATA__ A A A A B A C A D B B A B B B C C C A C B C C C D C E D D A D A A D A B D A C D A D D B D C D D D D A D D B D D C D D D E E A E B F F A F B F C F D F E F F F G F H F I F J F K F L F M F N F O F P F Q