[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: spam-script && use strict

Bernhard Schmalhofer - Sat Dec 08 17:46:12 2007

Stefan Bauer schrieb:
Hallo Leute,

da ich heute mein Programmieren mit Perl Buch erhalten habe, dachte
ich mir, ich versuch mich an einem kleinen Script.

#!/usr/bin/perl -w
use strict;
unless (@ARGV){ print "Aufruf mit ./spam.pl Log-Datei.log"};
open SPAM, $ARGV[0]     or die $!;
my @spam = <SPAM>;
my %benutzer = ();
foreach my $zeile (@spam) {
if ($zeile =~ m/.html; from=<(.*)> to=<(.*)(@.*)> proto/) {
werte_sammeln($1, $3, $2);
}
}
print "e-mail von $absender ging an $alias$empfaenger (Alias:$alias
$benutzer{$alias}{'score'})";
sub werte_sammeln {
my ( $absender, $empfaenger, $alias ) = @_;
$benutzer{$alias}{'score'} = 0;
$benutzer{$alias}{'score'}+= 1;
}

Global symbol "$absender" requires explicit package name at
./regextest.pl line 11.
Global symbol "$alias" requires explicit package name at
./regextest.pl line 11.
Global symbol "$empfaenger" requires explicit package name at
./regextest.pl line 11.
Global symbol "$alias" requires explicit package name at
./regextest.pl line 11.
Global symbol "$alias" requires explicit package name at
./regextest.pl line 11.


Das liegt wohl daran, dass ich die Variablen in der sub werte_sammeln
als privat (my) deklariert habe.

Da ich gerade eine Denkblokade habe, komme ich nicht drauf, wie ich
die Variablen wieder "freigebe".
Mir ist nicht ganz klar, was der Zweck des Programmes ist. Ich habe mal
angenommen das folgendes passieren soll:
i. Spamliste durchnudeln und auswerten
ii. Während des durchnudelns aktuelle infos ausgeben
iii. Nach dem Datensammels eine Zusammenfassung ausgeben

Einer verbesserte und kommentierte Version der Programmes schicke ich mit.

'my' Variablen haben einen bestimmten Bereich, in denen sie sichtbar sind.
Dieser Bereich kann eine Datei, eines Subroutine oder ein Block sein.
Um Fehlerquellen zu minimieren ist es ratsam den Gültigkeitsbereich von Variable
möglichst einzuschränken.


Grüße,
   Bernhard


Attachment: t.pl
Description: Perl program


Next: