1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
[ { id => 1, headline => "Das ist eine Überschrift in H1", # root hat keinen parent }, { id => 2, headline => "Das ist eine Überschrift in H2", parentid => 1 }, { id => 3, headline => "Das ist auch eine Überschrift in H2", parentid => 1 }, { id => 4, headline => "Das ist Überschrift in H3 unter einer H2", parentid => 3 } ]
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
use 5.024; use strict; use warnings; my @list_data = ( { indent => 0, text => "Test 1" }, { indent => 2, text => "Test 2" }, { indent => 1, text => "Test 3" }, { indent => 1, text => "Test 4" }, { indent => 3, text => "Test 5" }, ); my $type = q(ol); my $level = -1; my $html = q(<!DOCTYPE html>); for my $element (@list_data) { if ($level < $element->{indent}) { # Stufen einfuegen $html .= qq(<$type><li>) x ($element->{indent} - $level); } elsif ($level > $element->{indent}) { # Stufen schliessen $html .= qq(</li></$type><li>) x ($level - $element->{indent}); } else { # Gleiche Ebene $html .= q(</li><li>); } $level = $element->{indent}; $html .= $element->{text}; } # Cleanup: Close open lists $html .= q(</li></ol>) x ($level+1); print $html;
Quote<span class="title">Eingerückte hierarchische Liste (HTML) erzeugen</span>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use 5.024; use strict; use warnings; my @list_data = ( { indent => 0, text => "Test 1" }, { indent => 2, text => "Test 2" }, { indent => 1, text => "Test 3" }, { indent => 1, text => "Test 4" }, { indent => 3, text => "Test 5" }, ); my $html = q(<!DOCTYPE html>); for my $element (@list_data) { $html .= qq(<div style="padding-left:$element->{indent}em">$element->{text}</div>) } print $html;