Tux L i n u x * G u i d e

v o n * I n g o * B l e c h s c h m i d t * ( c ) * 2 0 0 1
Tux
|Home|

|Neue Artikel|

|Index|

|Liste|

|Code-Snippets|

|Links|

|Allgemeines|

|Cool Stuff|
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.

LinuxGuide Druckbare Version
Man-Page
Sourcecode
English Version
Verwandte Artikel:

HTML-Markups in Text umsetzen
Bilder-Archiv
Perl-Sicherheitslücken decken
Term::Cap in Perl
VIM als HTML-Editor
Zeitdiagramm erstellen
Operationen mit Dateien in Perl
CSV2HTML
Der HTML-Automat
Entropie
Dateien sortieren
Farbverlauf mit Perl
Text2HTML
Sichere Passwörter generieren
GenuineWord -- Ein Präprozessor für LaTeX



      .~.   
      /V\   
     // \\  
    /(   )\ 
     ^`~'^  
     


Hosted at Sorceforge.net
No ePATENTS
Viewable With Any Browser
Burn All GIFs!

E
ins 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:
# Das Ursprungs-Dokument:
 
<html>
<head>
<title>Perl-
Präprozessor</title>
</head>
<body>
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.<br /><br />
Die Idee ist: Sie wollen Texte,
hauptsächlich HTML-Dokumente
für's Web, dynamisch gestalten,
also so:<br />
[+ print "Hallo, Welt!\n" +]
</body>
</html>
 
 

# Das Dokument nach dem Präprozessorlauf:
 
<html>
<head>
<title>Perl-
Präprozessor</title>
</head>
<body>
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.<br /><br />
Die Idee ist: Sie wollen Texte,
hauptsächlich HTML-Dokumente
für's Web, dynamisch gestalten,
also so:<br />
Hallo, Welt!
</body>
</html>
 
 

Es soll also der Text zwischen [+ und +] dem Perl-Interpreter übergeben werden.
Die Realisierung hat auf 34 Zeilen platz, Download:
# 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, '</tmp/myeperl.tmp') ||
    #   die 'Can\' t open /tmp/myeperl.tmp!';
    # print <EPERL>;
    # close(EPERL);
    #####
    { eval("$tstring"); }
    #####
    $mstarte = 0;
    $mchar = ']'
  }
  if ($mchar eq '[' or $mchar eq '+') {
    $mstarte++;
  } elsif ($mchar eq ']') {
    # do nothing
  } else {
    print $mchar;
  }
}
 
 



Document Informations: Content-Type: text/html; charset=iso-8859-15
Author: Ingo Blechschmidt
Description: LinuxGuide - Sie wollen in Dokumenten, beispielsweise HTML, dynamische Perl-Elemente einbauen. Dieser Artikel zeigt, wie.
Keywords: 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, LinuxGuide
Robots: all
Copyright: Copyright (C) 2002 by Ingo Blechschmidt
Date: 2003-08-24T10:00:32+02:00

Stichwortverzeichnis | Neue Artikel | Übersicht | Codesnippets | Links | Copyright | Cool Stuff | Home | Druckbare Version | Manpage | Sourcecode | English Version
Diesen Artikel kritisieren, kommentieren oder ergänzen
Einen Neuen Artikel schreiben

 
This website is distributed under the GNU Free Documentation License .