On Wed Mar 03 1999, Florian Bartels wrote:
> #!/usr/bin/perl -w
> $L=0;
>
> while (<STDIN>) {
> $LINE = $_;
> $LINE =~ s/\n//gi;
> if(($LINE =~ /^From /) or ($LINE =~ /^Return-Path: /)) {$L = 0;}
> if ($L == 1) { print STDOUT $LINE . "\n"; }
> if ($LINE eq "") {
> if ($L == 0) {print STDOUT '-------######next#####-------'."\n"};
> $L=1;
> }
> }
> du �ffnest deinen Editor tippst: #!/usr/bin/perl
> und dann halt den rest
> Frage bei Fragen !
Du willst also, nachdem der Mailheader gelesen ist, den Inhalt des
From- bzw. Return-Path Headers ausgeben ?
#! /usr/bin/perl -w
while (<>) { if (1 .. /^$/) { if (/^From/) OR (/^Subject/) { print $_; }}}
Der Perl-Code, der da oben steht, ist schlichtweg unmoeglich. Warum ?
> $L=0;
Der Zaehler ist voellig unnoetig, denn die Ausgabe der Headerlines
kann man machen, nachdem der Header gelesen ist, oder noch besser
waehrend man die entsprechenden Zeilen liest.
> while (<STDIN>) {
> $LINE = $_;
> $LINE =~ s/\n//gi;
Es gibt dafuer extra einen Befehl, der die Newlines entfernt:
while (<STDIN>) {
chomp;
Oder, ganz nach Wunsch:
chomp($LINE = <STDIN>);
> if(($LINE =~ /^From /) or ($LINE =~ /^Return-Path: /)) {$L = 0;}
> if ($L == 1) { print STDOUT $LINE . "\n"; }
Die Zaehler sind unnoetig:
if (/^From/) OR (/^Return-Path/) { print $_; }
> if ($LINE eq "") {
Und was passiert, wenn die Leerzeile gar nicht so leer ist,
sondern ein Leerzeichen enthaelt ? ;)
Leerzeilen erkennt man, das zwischen dem Zeilenanfang und dem -ende
nichts steht, auch dafuer gibt es Zeichen:
if (/^$/) { print "Das ist eine Leerzeile\n";
Bitte, bitte, tu Dir selber einen Gefallen und verwende niemals
Zaehler fuer sowas, Du kannst gerne fragen, hier sind einige die
Dir sicher gerne weiterhelfen und zeigen, wie man es besser macht.
--
Um aus der Liste ausgetragen zu werden, eine Mail an [EMAIL PROTECTED]
schicken, mit dem Text: unsubscribe suse-linux