[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: