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

Antwort per Email an