Thread Aus Liste Baum erzeugen *war Tabelle / Tree
(7 answers)
Opened by Mayflow at 2010-11-26 04:44
Das hat wenig mit HTML::Treebuilder zu tun.
Ist aber nicht weiter schwer: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %tree=(); # baum erstellen while(my $line=<DATA>) { 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<span id=").join('',@in).qq(">\n); $ret.=create($ref,"$deep ",\@in); chomp($ret); $ret.="</span>\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 Das Parsen erfolgt seriell, da jede Zeile alle nötigen Informationen hat um seinen Platz im Baum zu bestimmen. Das erstellen der Ausgabe ist rekursiv. |