Programmierung in PERL

Arbeiten mit Dateien und Mails

von Roland Bernert, R egionaler Arbeitskreis Internet am Oberschulamt Karlsruhe

Aus einer Datei lesen 
#! /usr/bin/perl
open(DATEI,"datei.pl");
while (<DATEI>) { 
   chop;
   print "$_\n";
}
close(DATEI);
 
Felder eines von Datensätzen extrahieren 
#! /usr/bin/perl
open(DATEI,"datenbk.db");        # oeffne die Datei
while (<DATEI>) {                # solange noch Daten existieren
  chop;                          # schneide LF ab
  ($zuname,$vorname)=split(/;/); # teile die Datenfelder auf
  print "Zuname: $zuname , Vorname: $vorname\n";
}
close(DATEI);                    # schliesse die Datei
Felder eines von Datensätzen extrahieren und alle Daten ausgeben.
#! /usr/bin/perl
open(DATEI,"datenbk.db");        # oeffne die Datei
$anzahl=0;                       # gelesene Datenzeilen
while (<DATEI>) {                # solange noch Daten existieren
  chop;                          # schneide LF ab; Zeile in $_
  ($zuname[$anzahl],$vorname[$anzahl++])=split(/;/); # teile die Datenfelder
}
close(DATEI);                    # schliesse die Datei 
$i=0;                            # Anfangsindex
foreach $name (@zuname) {        # machs fuer alle Datensaetze
   print "Zuname: $zuname[$i] , Vorname: $vorname[$i]\n";
   $i++;                         # Index erhoehen
} 
Schreiben in eine Datei 
#! /usr/bin/perl
# S c h r e i b e n  i n  e i n e  D a t e i
# ==========================================
@liste=(Name1, Name2, Name3,Name4); # irgend etwas zum Schreiben
open(DATEI,">test.txt");  # oeffne Datei zum Schreiben
foreach $name (@liste) {  # alle Strings der Liste
  print DATEI "$name\n";  # in die Datei schreiben
}
close(DATEI);
# ------------------------------------------
# Die folgende Zeile nur zur Kontrolle
system ('cat test.txt');  # UNIX-Befehl cat
                          # zeigt den Inhalt einer Datei
Daten einer Datei anhängen 
#! /usr/bin/perl
# A n h a e n g e n  i n  e i n e  D a t e i
# ==========================================
@liste=(Name1, Name2, Name3,Name4); # irgend etwas zum Schreiben
open(DATEI,">>test.txt");  # oeffne Datei zum Anhaengen
foreach $name (@liste) {  # alle Strings der Liste
  print DATEI "$name\n";  # in die Datei schreiben
}
close(DATEI);
# ------------------------------------------
# Die folgende Zeile nur zur Kontrolle
system ('cat test.txt');  # UNIX-Befehl cat
                          # zeigt den Inhalt einer Datei
Abschicken einer MAIL 
#! /usr/bin/perl
# A b s e n d e n  e i n e r  M a i l
# ===================================
$theMailAdress="roland\@localhost";     # Empfaenger-Mailadresse
$myMailAdress="za186\@lehrer.uni-karlsruhe.de"; # Absender

open(MAIL, "|mail $theMailAdress");     # Oeffne fuer eine Mail
  print MAIL "Hallo, dies ist ein Test.\n";
  print MAIL "Viele Gruesse ($myMailAdress)\n";
close(MAIL);



Es gibt noch eine weitere Möglichkeit - mit direktem Aufruf des Sendmail:
#! /usr/bin/perl
$u="za186";
$replyto="za186\@lehrer.uni-karlsruhe.de";
# -------------------------------------------
print "Mail wird geschrieben\n\n";
# -------------------------------------------
$mailtext = "/usr/lib/sendmail $u\@lehrer.uni-karlsruhe.de <<xxx
Reply-to: $replyto
Subject: Testmail mit Perl
Dies ist ein Test
.
xxx
";
system("$mailtext");
# -------------------------------------------
print "Mail ist auf dem, Weg !\n\n";
exit 0; 

Und hier - weils soviel Spass macht - eine dritte Möglichkeit:
#! /usr/bin/perl

open(SENDMAIL, "|/usr/lib/sendmail -oi -t")
        or die "Can't fork for sendmail: $!\n";
print SENDMAIL <<"EOF";
From:bernert\@lehrer2.rz.uni-karlsruhe.de
To:za186\@lehrer.uni-karlsruhe.de
Subject: Testmail 2

Hier erscheint der Mailtext.

EOF
close(SENDMAIL);
exit 0;
Mails mit Attachment verschicken Die Anleitung steht auf einer anderen Seite
Bitte hier klicken

März, 2000 Roland Bernert