5 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
[% loop $story %]
<div class="story">
<h2 class="title">[% $story_title %]</h2>
<div class="content">
[% $story_content %]
</div>
</div>
[% end %]
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
#!/usr/bin/perl
use strict;
use warnings;
# Template-Datei (Quick & Dirty)
my $template = '
<html>
<body>
<div id="content">
[% loop $story %]
<div class="story">
<h2 class="title">[% $story_title %]</h2>
<div class="content">
[% $story_content %]
</div>
</div>
[% end %]
</div>
</body>
</html>
';
# Name der Loop
my $loop_name = "story";
# Array mit Hashes
my @array = (
{
story_title => "Erste Überschrift",
story_content => "Erster Inhalt",
},
{
story_title => "Zweite Überschrift",
story_content => "Zweiter Inhalt",
},
);
local ($1, $2, $3);
# Nach Loop-Muster suchen...
$template =~ m/
\[% \s* loop \s* \$ (\S+?) \s* %\] # [% loop $string %]
(.*?) # $loop_content
\[% \s* end \s* %\] # [% end %]
/xms;
my $loop_content = $2 if $1 eq $loop_name; # Inhalt der Loop (zwischen den Tags)
my $result;
for my $hash_ref ( @array ) { # Hashes aus dem Array rausholen
my $temp = $loop_content; # Loop-Inhalt zwischenspeichern
for my $key ( keys %{$hash_ref} ) { # Keys der Hashes durchgehen
$temp =~ s/
\[% \s* \$ (\S+?) \s* %\] # Nach [% $string %] suchen
/ # Ersetzen, falls im Hash vorhanden
$hash_ref->{$1} if exists $hash_ref->{$1}
/exms;
}
$result .= $temp;
}
# Die Loop im Template durch die geparste Loop ersetzen...
$template =~ s/
\[% \s* loop \s* \$ (\S+?) \s* %\]
(.*?)
\[% \s* end \s* %\]
/
$result
/xms;
print $template;
1 2 3
my $regex = qr- \[% \s* loop \s* \$ (\S+?) \s* %\] (.*?) \[% \s* end \s* %\]-xms;
5 Einträge, 1 Seite |