Du bist nicht angemeldet.

1

Freitag, 16. Mai 2003, 10:46

Lokaler Mail-Filter

Hallo zusammen. :)

Ich bin recht neu mit Perl, aber heute habe ich es gebraucht. Mein Mail-Programm ist an einer E-Mail gescheitert und wollte nichts mehr herunterladen. Ich als mit FTP auf den Server und alle Mails als Datei gesaugt. Waren seit gestern über 70 Stück. Ein Filter wäre also angebracht gewesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

$dir = "/home/memowe/public_html/memowe.de/mail";

opendir(DIR,$dir) || die "Error";

while($file = readdir(DIR)) {
        if($file =~ /\.de$/) { #nur in Mails filtern, enden alle auf .de
                open(IN,$file) || die "Fehler: konnte $file nicht öffnen.\n";
                @contents = <IN>;
                for($i=0; $i<$#contents; $i++) {
                        if($contents[$i] =~ /penis/i) {
                                system "rm", "$dir/$file";
                                print "$dir/$file deleted.\n\n";
                        }
                }
                close IN;
        }
}

closedir(DIR);


Optimierungsvorschläge?

Dankeschön. Bis spötär. :)
Mirko
Signatur von »memowe« Mirko Westermeier - Public key: 0x730E195D
Key fingerprint = 55A8 9646 9B58 60AC B5BC 9661 FDD4 93C0 730E 195D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »memowe« (16. Mai 2003, 10:47)


2

Montag, 19. Mai 2003, 09:46

RE: Lokaler Mail-Filter

Hallo.

Also der Code ist für einen neuen in Perl gut :) Keine weiteren Vorschläge.

Bei einer Zeile weiß ich nicht wie die so genau ist:

system "rm", "$dir/$file";

Ich glaube die löscht die Email, oder? Mir war bis jetzt nur der Befehl unlink bekannt, aber wenns damit auch geht, ist das natürlich auch gut ;)

MfG MaMo

3

Dienstag, 20. Mai 2003, 00:14

RE: Lokaler Mail-Filter

Zitat

Original von MaMo
Also der Code ist für einen neuen in Perl gut :)

Pfuh. Danke.

Aber normalerweise ist das doch in Perl so, dass dann irgendein Crack daherkommt und das auf eine Zeile mit 42 Zeichen kürzt, die kein normalsterblicher mehr lesen kann. ;)

Zitat

Keine weiteren Vorschläge.

Keine weiteren Fragen.

Zitat

Bei einer Zeile weiß ich nicht wie die so genau ist:
system "rm", "$dir/$file";
Ich glaube die löscht die Email, oder?

u r right man. ;) Ich habe hier Perl quasi als Ersatz für ein Shellscript verwendet. bash hätte das sicherlich auch gekonnt, aber ich glaube, dass ich von Perl mehr habe, da vielseitiger. Und weil es nur ein kurz zusammengehacktes Shellscript ist, ruft es auch einfach nur Programme auf, in diesem Fall rm, was auf Unixen Dateien löscht ("remove").

Zitat

Mir war bis jetzt nur der Befehl unlink bekannt

OK, das wäre vermutlich schöner, da plattformunabhängig. :)

Mirko
Signatur von »memowe« Mirko Westermeier - Public key: 0x730E195D
Key fingerprint = 55A8 9646 9B58 60AC B5BC 9661 FDD4 93C0 730E 195D