Ersetzen
Larsiboy
- cgi
Hallo ;
Bin weiter es geht , die werte werden ersetzt aber ich möchte doch , dass die werte nicht vorgegeben sind .
Wie soll ich das machen ?
my $line;
my $beschreibung = ' ';
my $bild = ' ';
my $bild2 = ' ';
my $repeat_auktion = ' ';
my $alias = ' ';
my $artikelname = ' ';
my $auktionsende = ' ';
my $mindestgebot = ' ';
my $aktuelles_gebot = ' ';
my $steigerung = ' ';
my $zahlung = ' ';
my $versand = ' ';
open FILE,"<t_artikel.htm" or die "artikel.htm: $!";
print header();
while (defined ($line=<FILE>)) {
$line=~s/[BILD]/$bild/ge;
$line=~s/[2BILD]/$bild2/ge;
$line=~s/[BESCHREIBUNG]/$beschreibung/ge;
$line=~s/[REPEAT_AUKTION]/$repeat_auktion/ge;
$line=~s/[ALIAS]/$alias/ge;
$line=~s/[ARTIKELNAME]/$artikelname/ge;
$line=~s/[AUKTIONSENDE]/$auktionsende/ge;
$line=~s/[MINDESTGEBOT]/$mindestgebot/ge;
$line=~s/[AKTUELLES_GEBOT]/$aktuelles_gebot/ge;
$line=~s/[STEIGERUNG]/$steigerung/ge;
$line=~s/[ZAHLUNG]/$zahlung/ge;
$line=~s/[VERSAND]/$versand/ge;
print $line;
}
close FILE;
Es heißt zum Beispiel $alias manchmal 123 oder 321 .
cu ;
Hi,
Bin weiter es geht , die werte werden ersetzt aber ich möchte doch , dass die werte nicht vorgegeben sind .
Wie soll ich das machen ?
was meinst du mit "nicht vorgegeben" ?
my $line;
my $beschreibung = ' ';
my $bild = ' ';
my $bild2 = ' ';
my $repeat_auktion = ' ';
my $alias = ' ';
my $artikelname = ' ';
my $auktionsende = ' ';
my $mindestgebot = ' ';
my $aktuelles_gebot = ' ';
my $steigerung = ' ';
my $zahlung = ' ';
my $versand = ' ';
Die Variablen sind jetzt mit einem Leerzeichen gefüllt. Es genügt zB my $versand = ''; oder willst du das so ?
open FILE,"<t_artikel.htm" or die "artikel.htm: $!";
print header();
while (defined ($line=<FILE>)) {
$line=~s/[BILD]/$bild/ge;
$line=~s/[2BILD]/$bild2/ge;
$line=~s/[BESCHREIBUNG]/$beschreibung/ge;
$line=~s/[REPEAT_AUKTION]/$repeat_auktion/ge;
$line=~s/[ALIAS]/$alias/ge;
$line=~s/[ARTIKELNAME]/$artikelname/ge;
$line=~s/[AUKTIONSENDE]/$auktionsende/ge;
$line=~s/[MINDESTGEBOT]/$mindestgebot/ge;
$line=~s/[AKTUELLES_GEBOT]/$aktuelles_gebot/ge;
$line=~s/[STEIGERUNG]/$steigerung/ge;
$line=~s/[ZAHLUNG]/$zahlung/ge;
$line=~s/[VERSAND]/$versand/ge;
print $line;
}
close FILE;
$xNeTworKx.
Hi,
Bin weiter es geht , die werte werden ersetzt aber ich möchte doch , dass die werte nicht vorgegeben sind .
Wie soll ich das machen ?
was meinst du mit "nicht vorgegeben" ?
my $line;
my $beschreibung = ' ';
my $bild = ' ';
my $bild2 = ' ';
my $repeat_auktion = ' ';
my $alias = ' ';
my $artikelname = ' ';
my $auktionsende = ' ';
my $mindestgebot = ' ';
my $aktuelles_gebot = ' ';
my $steigerung = ' ';
my $zahlung = ' ';
my $versand = ' ';
Die Variablen sind jetzt mit einem Leerzeichen gefüllt. Es genügt zB my $versand = ''; oder willst du das so ?
open FILE,"<t_artikel.htm" or die "artikel.htm: $!";
print header();
while (defined ($line=<FILE>)) {
$line=~s/[BILD]/$bild/ge;
$line=~s/[2BILD]/$bild2/ge;
$line=~s/[BESCHREIBUNG]/$beschreibung/ge;
$line=~s/[REPEAT_AUKTION]/$repeat_auktion/ge;
$line=~s/[ALIAS]/$alias/ge;
$line=~s/[ARTIKELNAME]/$artikelname/ge;
$line=~s/[AUKTIONSENDE]/$auktionsende/ge;
$line=~s/[MINDESTGEBOT]/$mindestgebot/ge;
$line=~s/[AKTUELLES_GEBOT]/$aktuelles_gebot/ge;
$line=~s/[STEIGERUNG]/$steigerung/ge;
$line=~s/[ZAHLUNG]/$zahlung/ge;
$line=~s/[VERSAND]/$versand/ge;
print $line;
}
close FILE;
$xNeTworKx.
Also nochmal jetzt ist der wert fest vorgegeben , aber ich will das zum Beispiel [ALIAS] durch $alias ersetzt wird .
Der wert von alias kommt über den aufruf /fff.pl?alias=Daniel
Ok ?
Cu ; Lars
Hi,
Also nochmal jetzt ist der wert fest vorgegeben , aber ich will das zum Beispiel [ALIAS] durch $alias ersetzt wird .
Der wert von alias kommt über den aufruf /fff.pl?alias=Daniel
Achso jetzt verstehe ich. Dann musst du CGI verwenden.
#!/usr/bin/perl -w
use strict;
use CGI;
my $query = new CGI;
my $alias = $query->param('alias');
print $query->header;
print "Ausgabe von alias = $alias\n";
$xNeTworKx.
use Mosche;
Den Tip mit CGI hast du bereits bekommen, vielleicht hier einige Verbesserungen:
Gerade wenn du sehr viele Template-Parameter hast, wird dein Quellcode sehr unübersichtlich. Verwende dann besser einen Hash.
Lasse alle Parameter, die du bekommst (also zB /cgi-bin/dein_cgi.pl?alias=blah) mit einem fest definierten Wert beginnen:
/cgi-bin/dein_cgi.pl?t_alias=blah&t_name=daniel&...
Dann füllst du einen Hash mit deinen Template-Parametern:
my $prefix = 't_'; # der Prefix, den du deinen Parametern gibst (um sie von nicht Template-Parametern zu unterscheiden.
my %hash = map { ($_ =~ /^$prefix/) ? (substr($_, length($prefix)), param($_)) : ()} param();
Das sieht ziemlich kompliziert aus, deswegen erkläre ich es hier ausführlich:
Die Funktion map ist etwas ähnliches wie eine for-Schleife, nur das sie eine Liste als Parameter erhält und auch eine zurückgibt. Der Code sieht in der Langform so aus
my $prefix = 't_';
my %hash;
foreach (param()) {
if (/^$prefix/){
# das if prüft hier, ob der aktuelle Parametername
# wirklich mit deinem Prefix beginnt (und damit zu
# deinen Template-Variablen gehört)
# jetzt schneiden wir das Prefix ab
my $name = substr($_, length(%prefix));
# und jetzt fügen wir den Template- Parameter mit
# Wert in den Hash ein
$hash{$name} = param($_);
}
}
Wenn du das hast, kannst du deine Template-ersetzung vereinfachen:
open FILE,"<t_artikel.htm" or die "artikel.htm: $!";
print header();
Ich sehe, dass du bereits das CGI-Modul benutzt, deswegen vergiss nicht, auch die Funktion param() zu importieren (ist bereits getan, wenn du das Symbol ':standard' importierst.
Wenn du sowieso alle Zeilen gleich danach ausgibst, spar dir den Umweg, die Datei zeilenweise einzulesen:
$/ = undef;
my $file = <FH>;
$file =~ s/[(.*?)]/$hash{$1}/g;
print $file;
Dann brauchst du die Schleife nicht mehr.
close FILE;
Wenn du Standard-werte setzen willst, solltest du diese vor dem Auslesen der Parameter in den Hash einfügen.
Hier nochmals die komplette Datei (ausgetestet):
########################
#!/usr/bin/perl -w
use strict;
use CGI qw(param header);
print header();
my $tmpl_prefix = 't_';
my $tmpl_file = '/web/test/htdocs/template.html';
my %tmpl_values = map { ($_ =~ /^$tmpl_prefix/) ? (substr($_, length($tmpl_prefix)), param($_)) : ()} param();
$/ = undef;
open(FH, $tmpl_file) or die "Kann $tmpl_file nicht öffnen: $!";
my $file = <FH>;
$file =~ s/[(.*?)]/$tmpl_values{$1}/g;
print $file;
close(FH);
###########################
Ich hoffe, du kannst damit etwas anfangen...
use Tschoe qw(Matti);