Thread HTML::Template: verschachtelte Loops (2 answers)
Opened by maceis at 2011-09-08 20:39

maceis
 2011-09-08 21:05
#152254 #152254
User since
2005-01-05
4 Artikel
BenutzerIn
[default_avatar]
Nachdem ich den Beitrag abgeschickte hatte, habe ich noch verschiedene Sachen probiert und bin auf eine Lösung gekommen.

Jetzt wo ich die Lösung habe, ist es eigentlich klar und entspricht auch dem (IMHO) wenig aussagekräftigen Beispiel in der Doku.

Hier also meine Lösung. Ich hoffe, es hilft mal jemandem:
Code: (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
#!/usr/bin/perl -w
use strict;
use HTML::Template;

# open the html template
my $doc = <<ENDE
<TMPL_LOOP name="outer_loop">
<td>
<TMPL_VAR name="schluessel">
<TMPL_LOOP name="inner_loop">
<br /><TMPL_VAR name="daten">
</TMPL_LOOP>
</td>
</TMPL_LOOP>
ENDE
;
my $template = HTML::Template->new(scalarref => \$doc);

# Beispiedaten
my %thehash = (
Erster_Schluessel => [ 'a1', 'a2' ],
Zweiter_Schluessel => [ 'b1', 'b2', 'b3' ]
);


foreach my $schluessel (keys %thehash) {
my (@outer_loop, @inner_loop, $daten);
my %outer_loop_row;
foreach my $daten (@{$thehash{$schluessel}}) {
my %inner_loop_row;
$inner_loop_row{"daten"} = $daten;
push (@inner_loop, \%inner_loop_row);
}
push (@outer_loop, \%outer_loop_row);
# %outer_loop_row =(
# schluessel => $schluessel,
# inner_loop => \@inner_loop
# );
$template->param(outer_loop =>
[ {
schluessel => $schluessel,
inner_loop => \@inner_loop
}
],
);

print $template->output;
}
gruß maceis

Eppur Si Muove (Gallileo Gallilei)

View full thread HTML::Template: verschachtelte Loops