Homepage Inspire-world | Forum
CGI/Perl Workshops Universell einsetzbare Templateroutine

 Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/Universell einsetzbare Templateroutine
Hier ein komplettes Beispiel einer universell einsetzbaren Templateroutine. Diese kann mit Skalar, Array und Hashwerten arbeiten und ist mit einer Zeile aufzurufen.

1. Das Beispielscript
#!/usr/bin/perl

#Fehlerausgabe an Browser
use CGI::Carp qw(fatalsToBrowser);

#############################################################
# Auszugebende Werte
$seitentitel = "Templateroutine in Action";

@colors = ('Rot','Weiss','Grün','Blau','Silber');

%produktinfo = (
'name' => 'Geschenkbox',
'bildurl' => 'http://www.inspire-world.de/perlcgi/pics/box.gif',
'hersteller' => 'Kiste & Co',
'beschreibung' => 'Universell verwendbare Geschenkbox',
'preis' => '12,59'
);
#############################################################

print "Content-type: text/html\n\n";

# Aufruf der Subroutine mit dem Template welches verwendet werden soll
print &tmplroutine("ausgabe.html");

# - - - - - - - - - - - - - - - - - - - - - -
# Subroutine Templateausgabe
# - - - - - - - - - - - - - - - - - - - - - -
sub tmplroutine {
my $templatedatei = shift;
my $OUTPUT;
local($/);
  
open (FILE, "<$templatedatei") || die "Kann Template nicht oeffnen: $!\n";
$OUTPUT = <FILE>;
close(FILE);
# Skalarwerte ersetzen
$OUTPUT =~ s/<__\$([\w\-]+)__>/${$1}/g;
# Hashwerte ersetzen
$OUTPUT =~ s/<__\%([\w\-]+)\{([\w\-]+)\}__>/${$1}{$2}/g;
# Arraywerte ersetzen
$OUTPUT =~ s/<__\@([\w\-]+)\[([\w\-]+)\]__>/${$1}[$2]/g;
return $OUTPUT;
}
2. Das Template dazu
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<title><__$seitentitel__></title>

<style type="text/css">
<!--
body {
font-family: Verdana, Arial;
background-color: #ffffff;
}
.tab {
background-color: #42719f;
}
.tabt {
background-color: #f4f4f4;
font-size: 11px;
padding: 3px;
}

.tc {
background-color: #ffffff;
font-size: 11px;
padding: 3px;
}
-->
</style>
</head>
<body>
<table cellspacing="1" cellpadding="0" border="0" width="500" class="tab">
<tr>
<td colspan="2" class="tabt"><b>Titel:</b> <__%produktinfo{name}__> 
<b>Hersteller:</b>  <__%produktinfo{hersteller}__></td>
</tr>
<tr>
<td valign="top" class="tc" width="50%">
<img src="<__%produktinfo{bildurl}__>" width=100 height=109 border=0 alt="">
<br><br>
<__%produktinfo{beschreibung}__></td>
<td valign="top" class="tc">
Preis: <__%produktinfo{preis}__><br><br>
	
Farben:<br> 
<__@colors[0]__><br>
<__@colors[1]__><br>
<__@colors[2]__><br>
<__@colors[3]__><br>
<__@colors[4]__><br>
	
</td>
</tr>
</table>

</body>
</html>
3. So sieht es dann aus:
Demo ansehen



 Zum Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/Universell einsetzbare Templateroutine
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!