WauWau: ...sieht aus wie dieses Forum am ersten April ;-)

Hallo ihr perl-freaks ;-),

so, WauWau hat mal ein bisschen mit Perl rumgemacht, genau. Isch habe da so eine Art "template", und das will ich jetzt einfach mal (später dann per Get-Übergabe, die vom Apachen mod_rewrite kommt) ersetzten. Also, meine Perldatei:

--------------------------------------------------------------------

#!D:/perl/bin/perl -w

#   PERL TEST SCRIPT

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

open(DATEI, "<content/start.txt") || die("Datei net gefunden");
my @file = <DATEI>;
close(DATEI);

my %attributes = (
   titel => "Undefiniert",
   heading => "Undefiniert"
   );
my $site;

foreach(@file)
{
    if($_ !~ /^#/)
    {
      if(/([A-Z]+) = "([^"]+)"/) {
        $attributes{lc($1)} = $2;
      } else {
        $site .= $_;
      }
    }
}

$myendtext = <<heretext;
<html>
<head>
  <title>[DOMAIN] - [TITLE]</title>
  <link rel="stylesheet" href="src/screen.css" type="text/css" media="screen" />
  <link rel="stylesheet" href="src/print.css" type="text/css" media="print" />
</head>
<body>
  <div id="head">
     <div class="left">
        
     </div>
     <h1>[DOMAIN]</h1>
     <h2>[CAPTION]</h2>
  </div>

<div id="content">
      <div class="left">
         <ul>
            <li><a href="#">Link 1</a></li>
            <li><a href="#">Link 2</a></li>
            <li><a href="#">Link 3</a></li>
         </ul>
      </div>

<div class="content">
         [CONTENT]
      </div>
  </div>

<div id="footer">
      <div class="left">
        <a href="#top" title="nach oben">↑</a>
      </div>
      <p>
        Ladezeitpunkt dieses Dokumentes: [LOADINGTIME]
        <br>Adresse dieses Dokuemntes: [URL]
      </p>
  </div>
</body>
</html>
heretext

$myendtext =~ tr/[DOMAIN]/$ENV{SERVER_NAME}/;
$myendtext =~ tr/[TITLE]/$attributes{titel}/;
$myendtext =~ tr/[CAPTION]/$attributes{heading}/;
$myendtext =~ tr/[CONTENT]/$site/;
$myendtext =~ tr/[LOADINGTIME]/localtime(time)/;
$ersetzung = "http://".$ENV{SERVER_NAME}.$ENV{SCRIPT_NAME};
$myendtext =~ tr/[URL]/$ersetzung/;

print $myendtext;

--------------------------------------------------------------------

Die Datei "content/start.txt":

--------------------------------------------------------------------

This is a comment. I love Comments.

Schöner Spruch, nicht wahr? Aber jetzt zum Thema:

TITEL = "Titel der Seite"
HEADING = "Überschrift der Seite"

<p>Und hier der Inhalt der Seite. Ich finde diese Art von .... Textaufzeichun
zwar ganz nett... aber jetzt mal ehrlich.... wie soll denn das funzen. Doch,
eigentlich schon, den die File wird in ein Array gelesen und dann ausgegeben,
oder auch nicht. ;-)</p>
--------------------------------------------------------------------

So, und hier die Ausgabe des Scriptes:

--------------------------------------------------------------------
<html>
<head>
  <title>$iuV{Sir - $aSarir</title>
  <link rel="stylesheet" href="src/screen.css" type="text/css" media="screen" />
  <link rel="stylesheet" href="src/print.css" type="text/css" media="print" />
</head>
<body>
  <div id="head">
     <div class="left">
        
     </div>
     <h1>$iuV{Sir</h1>
     <h2>$a{taSuir</h2>
  </div>

<div id="content">
      <div class="left">
         <ul>
            <li><a href="#">rink 1</a></li>
            <li><a href="#">rink 2</a></li>
            <li><a href="#">rink 3</a></li>
         </ul>
      </div>

<div class="content">
         $auiaiiar
      </div>
  </div>

<div id="footer">
      <div class="left">
        <a href="#top" title="nach oben">↑</a>
      </div>
      <p>
        radezeitpunkt dieses iokumentes: $ru{iSimaSVir
        <br>{dresse dieses iokuemntes: $errr
      </p>
  </div>
</body>
</html>
--------------------------------------------------------------------
Hat jemand eine Ahnung, was das hier sein soll? ...<h1>$iuV{Sir</h1>.... <h2>$a{taSuir</h2>... ist soweit ja ganz schön... aber irgendwie nicht so umbedingt das, was ich haben wollte.

Ich habe schon überlegt, ob das zeugs hier dran schuld ist: "tr/[DOMAIN]/$ENV{SERVER_NAME}/"... aber dürfte eigentlich nicht, denn er soll "[DOMAIN]" ja bitte nicht als regular Expression interpretieren...

also, vielen dank,

WauWau

PS: 'Bin ein bisschen in Eile, deswegen musste ich jetzt einfach mal dumm die 2 Dateien/1 ausgabe "hinrotzen", wenigdokumentiert. Aber der Perl-Script ist ja nicht so kompliziert, dürfte doch eigentlich kein problem sein....

--
ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
E-Mail WauWau: mailto:selfforum.wauwau@spameater.org
  1. Ich habe schon überlegt, ob das zeugs hier dran schuld ist: "tr/[DOMAIN]/$ENV{SERVER_NAME}/"... aber dürfte eigentlich nicht, denn er soll "[DOMAIN]" ja bitte nicht als regular Expression interpretieren...

    Ich hab keine ahnung was dein Skript macht und auch keine Zeit alles durchzulesen, aber du gibst einmal den falschen header aus (im MZ solltest du das bemerken), dann fehlt use strict; (zur Sicherheit) und dann solltest du dich mal auseinandersetzten, was tr/// wirklich macht. Nämlich nicht was du willst.

    Struppi.

    1. Hallo Struppi,

      Ich hab keine ahnung was dein Skript macht

      Mein Script öffnet eine Datei, die so aussieht:

      --------------------------------
      TITLE = "Titel"
      HEADING = "Überschrift"

      Text
      --------------------------------

      die "parst" er durch (einzeilige kommentare per "#" werden nicht interpretiert) und speichert die gewonnenen Werte. Die werden dann letztenendes in eine Art Template eingesetzt, diese ganzen einsetzungssachen machen dann Regular-Expression-Teile, eigentlich nicht wirklich, laut SelfHTML heißen sie "Transliterationen":
      http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#transliteration

      du gibst einmal den falschen header aus

      Absicht. Ich will nämlich den Sourcecode sehen, wie es dann letzenendes vom HTML-Interpreter aussieht, interressiert mich nicht. Der IE mag das meinetwegen als HTML interpretieren (auch wenn text/plain angegeben ist), Mozilla oder auch Opera tun das nicht.

      (im MZ solltest du das bemerken),

      jo.

      dann fehlt use strict; (zur Sicherheit)

      Stimmt, das könnte ich mal "aktivieren", obwohl hier (zumindest mir nicht offensichtlich) kein Scriptfehler vorliegt.

      und dann solltest du dich mal auseinandersetzten, was tr/// wirklich macht. Nämlich nicht was du willst.

      Das scheine ich glatt überlesen zu haben ;-) - Stimmt. Zitat von der eben aus SelfHTML verlinkten seite:

      <quote>Dabei sind sowohl das Suchmuster als auch das Ersetzmuster keine Zeichenketten, sondern nur einzelne Zeichen oder Zeichenbereiche. Die Muster sind sozusagen zwei Listen von Zeichen.</quote>

      Jo. Dann werde ich das mal mit tr/// lassen und s///gi verwenden :)

      danke,

      WauWau

      --
      ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
      E-Mail WauWau: mailto:selfforum.wauwau@spameater.org