www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

parse-mail.pl
#!/usr/local/bin/perl
# parse-mail.pl -- Ganzer Mail-Header mit einem Schlag lesen
#            und getrennt vom Mail-Body bearbeiten
#            "MH-Trick": Verwendet Absatz-Einlesemodus.

use English;    # fuer $RS

$ors = $RS;     # Alten Record-Separator merken.
$RS = '';       # Records sind durch eine leere Zeile
                # voneinander getrennt.

$header = <STDIN>;      # lies einen Record ein.
                        # In Wirklichkeit wird der
                        # gesamte Mail-Header auf
                        # einen Schlag eingelesen.

# Header parsen
@lines = split(/\n/, $header);
foreach $line (@lines) {
    if ($line =~ /(.*?):\s(.*)/) {
        $MH{$1} = $2;   # Funktioniert nicht bei Headern,
                        # die mehrfach vorkommen koennen,
                    # wie z.B. Received:
    }
}

# Fuege eigene Header-Zeilen hinzu, bzw.
# veraendere Header-Zeilen.
$MH{"X-Parsed"} = "MH-Trick Programm";
$MH{"X-Uppercased"} = "Yes";
$MH{"Subject"} =~ s/\S/X/g;   # Subject-Zeile ausXen.

# Header sortiert ausgeben:
foreach $key (sort keys %MH) {
   print "$key: $MH{$key}\n";
}
print "\n";                   # Mail-Header ist zu Ende.

# Restliche Mail unveraendert ausgeben:
$RS = $ors;                   # Verwende wieder den alten
                              # normalen Record-Separator.
while (<STDIN>) { print; }    # Den Rest einfach umkopieren.
   

[Prev] [Up] [Relevant Chapter] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:56:02 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo