Thread Trennung von Layout und Inhalt? (4 answers)
Opened by umbrella at 2009-09-02 00:09

umbrella
 2009-09-02 00:09
#125230 #125230
User since
2009-09-01
24 Artikel
BenutzerIn
[Homepage]
user image
Erstmal ein Hallo an alle. Bin ganz Neu hier. :)

Wollte Euch mal um Rat bitten.
Und zwar hätte ich gerne gewusst welche der folgenden Methoden die bessere Wahl ist?

Ich verwende für die Trennung von Layout und Inhalt, eigentlich immer das gleiche, Unterprogramm.

Meine Frage an Euch hierzu ist, gibt es an meinen Subroutinen etwas auszusetzen – oder ist es die bessere Wahl für die Webprogrammierung das HTML::Template::Compiled zu nutzen?

Hier mal zwei Möglichkeiten wie ich das bisher mache:

//Test Script 1 per, DO ...
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -T
use strict;
use warnings;
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
use Fcntl;

use lib '/var/www/cgi-bin/newtest';
do "database.pl";
my %html;

my $vorlage = "test.tmpl";
$html{'print'} = 'Das ist ein test!';
print &html_ausgeben($vorlage, \%html);
exit;


//Test Script 2 per, USE ...
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -T
use strict;
use warnings;
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);
use Fcntl;

use lib '/var/www/cgi-bin/newtest';
use database;
my %html;

my $vorlage = "test.tmpl";
$html{'print'} = 'Das ist ein test!';
print &html_ausgeben($vorlage, \%html);
exit;


Code (perl): (dl )
1
2
3
4
#test.tmpl
<html>
<-html_print->
</html>


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#wird mit DO eingebunden
sub html_ausgeben {
my $cgi = CGI->new;
my ($vorlage, $htmlref) = @_;
my @vorlage = &lade_datei($vorlage);
my $html = $cgi->header;
foreach my $zeile (@vorlage) {
$zeile =~ s/<-html_([a-z0-9]+)->/$htmlref->{$1}/gix;
$html .= $zeile;
} return $html; }

sub lade_datei {
my $datei = shift;
sysopen(VORLAGE, $datei, O_RDONLY) or die("$!");
my @vorlage = <VORLAGE>;
close(VORLAGE) or die("$!");
return @vorlage;
}
1;


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
#Wird mit USE eingebunden
package database;
use strict;
use Fcntl;
our (@ISA, @EXPORT, $VERSION);
use Exporter;
$VERSION = 1.00;
@ISA = ("Exporter");
@EXPORT = qw(html_ausgeben);

sub html_ausgeben {
my $cgi = CGI->new;
my ($vorlage, $htmlref) = @_;
my @vorlage = &lade_datei($vorlage);
my $html = $cgi->header;
foreach my $zeile (@vorlage) {
$zeile =~ s/<-html_([a-z0-9]+)->/$htmlref->{$1}/gix;
$html .= $zeile;
} return $html; }

sub lade_datei {
my $datei = shift;
sysopen(VORLAGE, $datei, O_RDONLY) or die("$!");
my @vorlage = <VORLAGE>;
close(VORLAGE) or die("$!");
return @vorlage;
}
1;



LG, -umbrella
Wer sich stets zu viel geschont hat, der kränkelt zuletzt an seiner vielen Schonung. Gelobt sei, was hart macht!

View full thread Trennung von Layout und Inhalt?