From p.seitz at koehler-seitz.de Fri Feb 2 12:42:00 2001
From: p.seitz at koehler-seitz.de (Peter Seitz jun.)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] (Fwd) Datei lesen
Message-ID: <31C7A632FF@bzs.tu-graz.ac.at>
* * * vienna-pm-list * * *
Hallo Perl Mongers,
hab mal wieder eine Frage um die Diskussion hier anzukurbeln...
Ich habe eine Datei (im speziellen einen e-mail Folder), welche einen
"Header" mit 128 bytes hat. Nach diesem Header sind die Mails im
ASCII-Zeichensatz fortlaufend abgespeichert. Die einzelnen Mails sind
durch ein Steuerzeichen chr(26) voneinander getrennt.
Wie kann ich es nun bewerkstellen, den "Header" zu lesen und
anschliessend die einzelnen Mails.
Wenn ich das English Modul verwende kann ich ja die Mails
'Zeilenweise' lesen:
use English;
$ors= $RS;
$RS = \xa1;
und dann einfach die Mails blockweise lesen.
Wie kann ich nun den 128-bytes header entfernen?
Danke fuer Euere Tips an die Liste.
Gruss
Peter Seitz
Projektleiter Projekt Woerterbuch
--
Interesse an einem freien deutschen Woerterbuch? Helfer gesucht!
Projekt Woerterbuch:
###
You are subscribed to vienna-pm-list as "Peter Seitz jun."
http://www.fff.at/fff/vienna.pm/
From seitz at bzs.tu-graz.ac.at Sun Feb 4 07:58:53 2001
From: seitz at bzs.tu-graz.ac.at (Peter Seitz)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] Datei lesen
Message-ID: <5E5A132A3D@bzs.tu-graz.ac.at>
* * * vienna-pm-list * * *
Hallo Freunde,
ich habe aehm, tja... ein kleines Windows Problem...
Ich habe unter DOS ein perl Programm geschrieben, welches einen
Mailfolder einliest und die Einzelmails ausliest. Die Einzelmails
sind mit \x1A voneinander getrennt.
Unter DOS 6.2 laeuft das alles auch hervorragend.
Nun habe ich das Programm und den Mailfolder auf meinen Win98 SE
Rechner kopiert und habe das mittels ActiveState Perl (5.6.0 Build 620)
ausfuehren wollen, doch in dem Mailfolder mit 190 Mails findet
das Programm nun nur noch die erste Mail.
Hier das gekuerzte Programm:
#!/usr/bin/perl -w
use English; # In order to read one e-mail message as one record
use Carp;
use strict;
# digest seperation character
my $message_boundary = '----------------Message-boundary';
my $message_seperator = "\x1A"; # mail seperator chr(26)
my $ors = $RS; # remember old record seperator (EOL)
$RS = $ors . $message_seperator; # new 'eol'-value
my $mime_seperator = $ors . $message_boundary;
my $mailfolder= "wpm-b-01.pmm"; # spaeter mal durch Benutzereingabe
open(MAILF, $mailfolder)|| die "Can't Open Mailfolder $mailfolder: $!\n";
# skip the first 128 bytes at the begining of each mail folder
read(MAILF,my $header,128);
print "'$header'\n";
my $number = 0; # for generating the filename
my $filename = ""; # filename for storing the extracted e-mail message
while () {
chomp; # remove mail seperator character
if ($_ =~ m/$message_boundary/) {
print "D";
my @mailmessages = split(/$mime_seperator/, $_);
my $dummy = shift(@mailmessages);
if ($mailmessages[$#mailmessages] eq "--") {
$dummy = pop(@mailmessages);
}
foreach (@mailmessages) {
$filename = sprintf("x%06d.cnm", $number);
$number = $number+1;
print "."; # we've written a single message
s/^\s*//; # remove empty line(s) at the beginning of a message
# Message schreiben
} # foreach (@mailmessages)
}
else {
# we have a normal message found here
$filename = sprintf("x%06d.cnm", $number);
++$number;
print "M"; # we've written an single mail message (unconverted)
# Message schreiben
}
} # while ()
print "\nAll work done...\n";
Ich bin nun etwas ratlos, wie ich rausbekommen soll, wo das Problem
liegt. Offensichtlich ist die Zeilenende-Problematik hier das
Problem, doch ich dachte unter DOS und Windows ist hier kein
Unterschied.
Wer kann mir Tips geben, wie ich das problem einkreisen kann.
Mittlerweile hab ich es unter Linux getestet und da funktioniert
auch alles praechtig.
With best compliments
Peter Seitz
--
Technische Universitaet Graz, Austria - Fak. f. Bauingenieurwesen
mailto:seitz@bzs.tu-graz.ac.at - http://wwwbzs.tu-graz.ac.at/~seitz/
Mitglied der Pegasus Mail Supportgruppe
Koordinator des Pegasus Mail Uebersetzungsprozesses
Die (In)Offizielle deutschsprachige Support Seite fuer Pegasus Mail:
Original: http://wwwbzs.tu-graz.ac.at/software/pegasus/
Mirror: http://ftp.uni-mannheim.de/mirror/pmail/
###
You are subscribed to vienna-pm-list as "Peter Seitz"
http://www.fff.at/fff/vienna.pm/
From roland.bauer at fff.at Sun Feb 4 13:09:10 2001
From: roland.bauer at fff.at (Roland Bauer)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] Datei lesen
References: <5E5A132A3D@bzs.tu-graz.ac.at>
Message-ID: <3A7DA8D6.1452BD1C@fff.at>
* * * vienna-pm-list * * *
> ausfuehren wollen, doch in dem Mailfolder mit 190 Mails findet
> das Programm nun nur noch die erste Mail.
es findet die erste von 190 mails (und ignoriert den rest)
oder es betrachtet das gesamte file
(ohne header) als eine einzige mail?
roland
###
You are subscribed to vienna-pm-list as Roland Bauer
http://www.fff.at/fff/vienna.pm/
From seitz at bzs.tu-graz.ac.at Mon Feb 5 15:04:29 2001
From: seitz at bzs.tu-graz.ac.at (Peter Seitz)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] Datei lesen
Message-ID: <7E2C4A2F47@bzs.tu-graz.ac.at>
* * * vienna-pm-list * * *
On Sun, 04 Feb 2001 20:09:10 +0100
Roland Bauer wrote:
> * * * vienna-pm-list * * *
>
>
> > ausfuehren wollen, doch in dem Mailfolder mit 190 Mails findet
> > das Programm nun nur noch die erste Mail.
>
> es findet die erste von 190 mails (und ignoriert den rest)
> oder es betrachtet das gesamte file
> (ohne header) als eine einzige mail?
Es schmiesst den Header (128 bytes) weg und erkennt die erste Mail in
dem Mailfolder. Die restlichen 189 Mails werden ignoriert.
With best compliments
Peter Seitz
--
Technische Universitaet Graz, Austria - Fak. f. Bauingenieurwesen
mailto:seitz@bzs.tu-graz.ac.at - http://wwwbzs.tu-graz.ac.at/~seitz/
Mitglied der Pegasus Mail Supportgruppe
Koordinator des Pegasus Mail Uebersetzungsprozesses
Die (In)Offizielle deutschsprachige Support Seite fuer Pegasus Mail:
Original: http://wwwbzs.tu-graz.ac.at/software/pegasus/
Mirror: http://ftp.uni-mannheim.de/mirror/pmail/
###
You are subscribed to vienna-pm-list as "Peter Seitz"
http://www.fff.at/fff/vienna.pm/
From Harald.Schoenknecht at maxmobil.at Thu Feb 15 08:03:00 2001
From: Harald.Schoenknecht at maxmobil.at (Harald.Schoenknecht@maxmobil.at)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] Hallo! Und gleich eine Frage...
Message-ID:
* * * vienna-pm-list * * *
Hallo!
Schoen das es eine Wiener UG gibt...
Ich habe eine Frage zu CGI (Perl/Apache) die mir momentan Kopfzerbrechen
bereitet...
Wenn ich ein Perl Programm laufen habe das *sehr* lange zur Ausfuehrung
benoetigt dann wird die HTML Datei - trotz print $query->end_html; - nicht
"beendet" und ich bekomme nach einiger Zeit einen Timeout. Gibt es eine
(einfache?) Moeglichkeit entweder Apache zu sagen: Da kommt nichts mehr
(und das Perl Programm trotzdem weiterlaufen zu lassen und nicht zu
beenden...) oder aber ein anderes Programm aufzurufen das weiterlaeuft
waehrend das urspruengliche Programm beendet wird (damit Apache nichts mehr
erwartet...).
So:
print $query->p("Der Transfer wird begonnen...");
print $query->end_html;
$start_demon="/oms_opt/local/apache/cgi-bin/transfer/exec_demon.pl
".$u_id." ".$filenameX." ".$N_elem." ".$N_MSC_Datei." ".$N_user."
".$N_pass;
exec $start_demon;
exit(1);
geht's leider nicht... entweder das Programm exec_demon.pl wird ueberhaupt
nicht gestartet oder aber gleich beendet (hat nicht mal die Zeit eine
Statusmeldung (in eine Datei) zu geben...).
PeAcE
Harald
-----BEGIN GEEK CODE BLOCK-----
GCC/IT d-- s: a- C++(++++) UL++ US P+ L+(+++) E--- W++ N+ o? K? w---
O+ M- V? PS+++ PE- Y+ PGP- t+ 5+++ X- R+ tv- b+++ DI+++ D+
G e++* h+* r-- y+
------END GEEK CODE BLOCK------
###
You are subscribed to vienna-pm-list as Harald.Schoenknecht@maxmobil.at
http://www.fff.at/fff/vienna.pm/
From domm at zsi.at Thu Feb 15 08:30:01 2001
From: domm at zsi.at (Thomas Klausner)
Date: Thu Aug 5 00:23:41 2004
Subject: [vienna.pm] Hallo! Und gleich eine Frage...
In-Reply-To:
Message-ID: <3A8BF5F9.26620.591FD5@localhost>
* * * vienna-pm-list * * *
Hi!
> "beendet" und ich bekomme nach einiger Zeit einen Timeout. Gibt es eine
> (einfache?) Moeglichkeit entweder Apache zu sagen: Da kommt nichts mehr
> (und das Perl Programm trotzdem weiterlaufen zu lassen und nicht zu
> beenden...)
Wenn mich nicht alles taeuscht kann man das machen, indem
man eine kurze Meldung generiert, einen Content-Lenght Header
mit der Laenge dieser Meldung ausgibt und dann
print $meldung macht.
habe allerdings keine praktische Erfahrung damit, sondern das nur
mal wo gelesen (in der mod_perl mailingliste, glaub ich ...)
print $query->end_html ist ja im Prinzip nur ein Shurtcut fuer
print "