[
Thread Prev][
Thread Next] >
Date Index
>
Thread Index
Re: spam-script && use strict
Jörg Meltzer -
Sun Dec 09 02:25:22 2007
Hallo Stefan,
Zur Syntax: @ ist im regex ist nicht escaped.
Was genau soll das Skript eigentlich leisten?
$absender und $empfaenger wird in werte_sammeln nicht verarbeitet,
kann demnach auch später nicht ausgegeben werden. ( daher auch die use
strict warnung )
Alternativ muss das print statement in die Subroutine.
Der 'score' für $alias wird nicht inkrementiert sondern nur auf 1 gesetzt.
Es ist für mich unverständlich, was %benutzer dann eigentlich speichert.
Gruß,
Jörg
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".
>
> Danke und schönes WE
>
> stefan
Next:
- Re: spam-script && use strict, (continued)