Liebe Experten,
als völliger PERL-Laie gelingt es mir einfach nicht, eine automatische email bei einem neuen Eintrag in ein PERL-Script zu installieren. So, wie ich es gemacht habe, bekomme ich immer 3 Mails bei einer Änderung. Außerdem möchte ich gern den Inhalt eines bestimmten Feldes mit gemailt bekommen. Kann mir bitte jemand helfen? (Suche "ich@xyz.de" um zu meiner Version zu gelangen)
+++
$link="baseportal.pl?htx=$htx";
$link.="&db=$db" if $db ne "";
$_header="Content-type: text/css\n\n" if $css;
unless($pure)
{
out <<EOF;
<html><head><title>baseportal Wiki</title>
<link href="$link&kennung=3&pure=1&css=1" type="text/css" rel="stylesheet">
</head><body>
EOF
}
sub esc { my $x=$_[0]; my $y=$_[1]?"":"\n"; $x=~ s/([^a-zA-Z0-9 $y^])/"^".unpack("C",$1)."^"/ge; $x }
#sub esc { my $x=$_[0]; $x=~ s/([\=\*\-\_\+\!\^\|\[\]\~\$\@\%\:])/"^".unpack("C",$1)."^"/ge; $x }
sub get_page
{
  get "Kennung==$_[0] sort=- range=0,1";
  my $red=$Text eq ""?' style="color:red"':"";
  my $new=$Datum ge datum("-7","intern")?' <span style="color:red">'.($_[1]?"***":"^42^^42^^42^").'</span>':"";
   local $index=""; do_headers($Text, "$link&kennung=$Kennung") if $do_index && !$_[1];
  return "<a href=\"$link&kennung=$Kennung\"$red>$Titel</a>$new$index";
}
  s#\^#^94^#g;        # ^ selbst escapen
  s#(^|\n)(\+\+\+\n)(.*?)(\n\+\+\+\n)#$1.$2.esc($3).$4#ges;        # codeblock
  s#\\([^\n\\]*)\\#"\\".esc($1)."\\"#ge;      # alles zwischen \...\ wird nicht ersetzt
  s#([\$\@\%]\w[\w{}\[\]()]*)#esc($1)#ge;              # $var[3]
  # Titel mit Kennung ersetzen (oder umgekehrt) - dadurch kann später beliebig der Titel geändert werden - was bei den anderen wikis nicht geht. Genial, wie ich finde ;-)))
   s/(\[([^\]]*)\])/
    my ($r,$t)=($1,$2);
    unless($t=~ m#^(include|copy|image|class)=(.*)#i || $t=~ m#^([^|]*)\|(.*)#)
    {
      if($_[1])
      {
        get ["Titel", "~=", $t];
        if($_amount==0)
        {
          put ["Titel", $t]; get ["Titel", "==!", $t]; mod "Id==$_id", ["Kennung", $_id]; my $k=$_id;
          get "Kennung==0 sort=- range=0,1"; put ["Kennung", 0, "Autoren", $Autoren, "Titel", $Titel, "Text", "$Text\n   - [$k]"];     # neue seite automatisch ins inhaltsverzeichnis eintragen
          $Kennung=$k;
        }
        $r="[$Kennung]"
      } else
      {
        get "Kennung==$t sort=- range=0,1";
        $r="[$Titel]"
      }
    }
    $r
  /ge;
  s#\^(\d{1,3})\^#pack("C",$1)#ge;         # ^...^ ascii-code umsetzung
# letzten änderungen am wiki gesamt ausgeben
if($cmd eq "changes")
{
  out get_navi($kennung);  $kennung="";
  out "<h1 class=Titel>Letzte Änderungen</h1>";
  out "<div class=Text>Letzte Änderungen gesamt:<br><br>";
  out "<table class=table><tr><th>Titel</th><th>Zeit</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";
  my $red; my $lastdatum; my $thisdatum;
  get "Id==* sort=- range=0,100";
  while(get_next)
  {
    $red=$Text eq ""?' style="color:red"':"";
    $thisdatum=datum($Datum,"Tag.Monat.Jahr");
    out "<tr><td align=right>$thisdatum</td></tr>" if $lastdatum ne $thisdatum; $lastdatum=$thisdatum;
    out "<tr><td><a href=\"$link&id=$_id\"$red>$Titel</a></td><td align=right>".datum($Datum,"Stunde:Minute")."</td><td align=right>".($red?"":length($Text))."</td><td>$Autor</td><td>$Grund</td></tr>\n";
  }  
  out "</table></div>";
}
# stichworte ausgeben
if($cmd eq "keywords")
{
  get "Begriff==*", "keywords";
  out get_navi($kennung);  $kennung="";
  out "<h1 class=Titel>Stichwortverzeichnis</h1><ul><table width=60%>";
  my $lf="";
  while(get_next "keywords")
  {
    my $f=uc(substr($Begriff,0,1));
    out "<tr><td style=\"font-size:120%;font-weight:bold\"><br>$f</td></tr>" if $f ne $lf; $lf=$f;
    out "<tr><td valign=top>".convert_html($Begriff)."</td><td>";
    foreach $Kennung (split /#/, $Seiten)
    {
      get "Kennung==$Kennung" unless $Titel=$k{$Kennung}; $k{$Kennung}=$Titel;       # cache
      out "<a href=\"$link&kennung=$Kennung\">$Titel</a><br>";
    }
    out "</td></tr>";
  }
  out "</table></ul>";
}
# eintrag ändern
if($cmd eq "mod" && $id ne "")
{
  $_put{Text}=mod_links($_put{Text},1);
  get "Id==$id";
  $_put{Kennung}=$kennung=$Kennung; $cmd=""; $id="";
  $_put{Autor}=$nAutor if $nAutor ne "";
  $_put{Autoren}=$Autoren;
  $_put{Autoren}.=($Autoren eq ""?"":", ").$_put{Autor} if index(", $Autoren,", ", $_put{Autor},")<0;
  if($Gesperrt)
  {
    out "Seite gesperrt. Änderungen nicht möglich.";
  } else
  {
    put if $_put{Text} ne "" && $_put{Titel} ne "";
  }
  if($nAutor ne "")
  {
    get "Name==$nAutor", "users";
    put ["Name", $nAutor], "users" if $_amount==0;
  }
  do_keywords if $Stichworte ne $_put{Stichworte};
}
# bestimmten eintrag ausgeben - vorcheck ob der eintrag noch neu ist: dann gleich zu do_mod
if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
{
  if($id ne "")
  {
    get "Id==$id";
  } else
  {
    $kennung||=0;
    get "Kennung==$kennung sort=- range=0,1";
  }
  if($Text eq "" || ($Bearbeitung && !$css && !$show)) { $id=$_id; $cmd="do_mod"; }
}
# änderungsformular ausgeben
if($cmd eq "do_mod")
{
  get "Id==$id" if $id ne "";
  $titel||=$Titel;
  $autor=$Autor;
  $autoren=$Autoren;
  $bearbeitung=$Bearbeitung?" checked":"";
  $stichworte=$Stichworte;
  $kennung=$Kennung;
  $_=mod_links($Text);
  s/&/&/g; s/"/"/g; s/</</g; s/>/>/g;
  $text=$_;
  my $zurueck=$bearbeitung?"<a href=\"$link&kennung=$kennung&show=1\">Seite anzeigen</a>":"<a href=\"$link&kennung=$kennung\">Ohne Änderungen zurück zur Seite</a>";
  get "Id==*", "users";
  $select="";
  while(get_next "users")
  {
    $select.="<option".($autor eq $Name?" selected":"").">$Name";
  }
  my $titeltext="Seite bearbeiten";
  my $buttontext="Änderungen speichern";
  get "Kennung==$kennung sort=- range=0,1";
  if($id ne $Id)
  {
    $titeltext="Alte Version vom ".datum($Datum)." bearbeiten";
    $buttontext="Diese Version zur aktuellen machen";
  }
mail 'scriptum@frankenzeit.de', "Neuer Eintrag in der Datenbank Frîjas Codex", "Es wurde ein neuer Datensatz in der Datenbank eingetragen";
out <<EOF;
<h1 class=Titel>$titeltext</h1>
<div class=Text>
<form action="$link&cmd=mod&id=$id" method="post" enctype="multipart/form-data">
<input type="hidden" name="htx=" value="$htx">
<input type="hidden" name="cmd=" value="mod">
<input type="hidden" name="id=" value="$id">
Titel: <input type="text" name="Titel:=" value="$titel" size=60><br>
<textarea name="Text:=" style="width:100%" cols=60 rows=25>$text</textarea>
Autor: <select name="Autor:="><option>$select</select> oder neu: <input type="text" name="nAutor=" size=16>
Stichworte: <input type="text" name="Stichworte:=" value="$stichworte" size=40>
<br><br>
<table width=90%><tr><td><input type="submit" value="$buttontext" accessKey=s title="ALT + S - Abschicken"></td><td><a href="$link&kennung=85">Eingabehilfe</a></td><td align=right>$zurueck</td></tr></table>
</form>
$kennung=""; $id="";
}
# bestimmten eintrag ausgeben
if($kennung ne "" || $cmd eq "" || ($cmd eq "" && $id ne ""))
# Ältere Versionen einer Seite ausgeben
if($cmd eq "old")
{
  get "Kennung==$kennung sort=- range=0,10";
  $datum=datum($Datum);
  $titel="<a href=\"$link&kennung=$kennung\">$Titel</a>";
  $autoren=$Autoren;
  $autor=$Autor;
  $id=$_id;
  $text="Letzte Änderungen an dieser Seite:<br><br>";
  $text.="<table><tr><th>Datum</th><th>Zeichen</th><th>Autor</th><th>Grund</th></tr>\n";
  while(get_next)
  {
    $text.="<tr><td align=right><a href=\"$link&cmd=do_mod&id=$_id\">".datum($Datum)."</a></td><td align=right>".length($Text)."</td><td>$Autor</td><td>$Grund</td></tr>\n";
  }  
  $text.="</table>";
} elsif($css)
{
  out $Text;
} else
{
  # Ergebnis sichern, weil beim Ersetzen vom Text auch ein get vorkommt, das diese überschreibt. mhhh, nicht allzu schön :-(
  $datum=datum($Datum);
  $titel=$Titel;
  $autoren=$Autoren;
  $autor=$Autor;
  $gesperrt=$Gesperrt;
  $id=$_id;
  $aelter=" - <a href=\"$link&cmd=old&kennung=$kennung\">Ältere Versionen</a>" if $_amount_query>1;          # gibt mehr als 1 version
  $_=$Text;
  $class="";
out <<EOF;
$navi<h1 class=Titel>$titel</h1>$index
<div class=Text>$text</div>
<div class=info>
<span class=Autoren>$aendertext $datum von $autor<br>
Autoren: $autoren</span><p style="margin:10px"></p>
$aender$aelter
</div>
<br>
EOF
}
</perl>