--------------------------------Linux Guide---------------------------------- by Ingo Blechschmidt (c) 2002 ----------------------------------------------------------------------------- ------------------------- Perl-Präprozessor ------------------------- Fre Aug 24 10:00:32 MEST 2001 ------------------------- Perl Prä- Pre- Prozessor Präprozessor Preprozessor Dateien HTML Meta Metasprache ersetzt substitute Ausdruck Ausdrücke Perl-Ausdrücke Perlausdrücke Embedded_Perl Perl EPerl ePerl ----------------------------------------------------------------------------- Sie wollen in Dokumenten, beispielsweise HTML, dynamische Perl-Elemente einbauen. Dieser Artikel zeigt, wie. ----------------------------------------------------------------------------- Eins vorweg: ePerl (Embedded Perl) leist dies, und sogar noch viel mehr. Dieser Artikel soll nur das Grundgerüst eines Präprozessors zeigen, und ist zudem sehr unsicher. Wenn Sie einen "schlimmen" Perl-Befehl eingeben, kann auch was "schlimmes" passieren (keine Sandbox!). Für Erweiterungen bin gerne offen. Trotzdem viel Spaß beim Lesen. Die Idee ist: Sie wollen Texte, hauptsächlich HTML-Dokumente für's Web, dynamisch gestalten, zum Beispiel so: --------CODE--------: Das Ursprungs-Dokument: Perl- Präprozessor Eins vorweg: ePerl (Embedded Perl) leist dies, und sogar noch viel mehr. Dieser Artikel soll nur das Grundgerüst eines Präprozessors zeigen, und ist zudem sehr unsicher. Wenn Sie einen "schlimmen" Perl-Befehl eingeben, kann auch was "schlimmes" passieren (keine Sandbox!). Für Erweiterungen bin gerne offen. Trotzdem viel Spaß beim Lesen.

Die Idee ist: Sie wollen Texte, hauptsächlich HTML-Dokumente für's Web, dynamisch gestalten, also so:
[+ print "Hallo, Welt!\n" +] --------/CODE-------- --------CODE--------: Das Dokument nach dem Präprozessorlauf: Perl- Präprozessor Eins vorweg: ePerl (Embedded Perl) leist dies, und sogar noch viel mehr. Dieser Artikel soll nur das Grundgerüst eines Präprozessors zeigen, und ist zudem sehr unsicher. Wenn Sie einen "schlimmen" Perl-Befehl eingeben, kann auch was "schlimmes" passieren (keine Sandbox!). Für Erweiterungen bin gerne offen. Trotzdem viel Spaß beim Lesen.

Die Idee ist: Sie wollen Texte, hauptsächlich HTML-Dokumente für's Web, dynamisch gestalten, also so:
Hallo, Welt! --------/CODE-------- Es soll also der Text zwischen [+ und +] dem Perl-Interpreter übergeben werden. Die Realisierung hat auf 34 Zeilen platz, Download: --------CODE--------: myeperl.pl #!/usr/bin/perl -w # myeperl - Prepocessor for documents, embedded Perl. # Copyright (C) Don Aug 23 19:01:36 MEST 2001 by Ingo Blechschmidt # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # Ingo Blechschmidt # Arberstraße 5 # 86179 Augsburg # E-Mail: iblech@web.de, http://www.way.to/uselinux/ # Tel.: +49 / 821 882955 # # $mchar = ''; $mstarte = 0; $tchar = ''; $tstring = ''; while(not eof STDIN) { $mchar = getc STDIN; if ($mstarte == 2) { $tchar = ''; $tstring = ''; while($tchar ne ']') { $tchar = getc STDIN; $tstring .= $tchar; } $tstring = substr($tstring, 0, length($tstring) - 2); ##### # system("perl -e '$tstring' > /tmp/myeperl.tmp"); # open(EPERL, '; # close(EPERL); ##### { eval("$tstring"); } ##### $mstarte = 0; $mchar = ']' } if ($mchar eq '[' or $mchar eq '+') { $mstarte++; } elsif ($mchar eq ']') { # do nothing } else { print $mchar; } } --------/CODE-------- ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- This document is distributed under the terms of the GNU Free Documentation License.