"enoquick" <
enoq...@gmail.com> ha scritto nel messaggio
news:mh5fkn$k9a$1...@virtdiesel.mng.cu.mi.it...
> In questi casi si va di debugger
> Per fortuna il debugger perl è facile da usare
eh... 'nsomma :) sono punti di vista..
A sapere cosa guardare, perchè ho provato a fare il trace e non ho nessun
errore visibile, anche perchè in fin dei conti l'errore non c'è, non almeno
a livello logico.
Quindi io ho un array (su disco), con questo script:
#!/usr/local/bin/perl
use strict;
use Tie::File;
my @database;
tie @database, 'Tie::File', 'database.dat';
foreach my $test(@database) {
print "$test\n";
}
untie @database;
ottengo questo output:
liftman@prove:~$ perl -w
prova.pl
gino
liftman
^pino^
^pino^
^pino^
toto
carlo
le istruzioni che ho sullo script per controllare la presenza di un nome
funzionano perfettamente per i nomi "normali", la presenza multipla di
"^pino^ è dovuta al fatto che comunque vada, qualsiasi combinazione che usi
non viene trovato nel l'array.
Il codice che segue controlla che il nick, nel caso dell'esempio sotto che
entra nel canale, sia o meno presente nell'array.
$utente banalmente è il nick in questione.
if ($answer =~ /:(.*)!.+?(JOIN)\s:($chan)/) {
$utente = $1;
&checkDB($utente);
if ($trovato2 eq $utente) {
print $server "PRIVMSG $chan : Benvenuto su $chan $utente
\r\n" if $utente ne $nick;
}
else {
print $server "PRIVMSG $chan : $utente non risulta nel
database \r\n";
print $server "MODE $chan +b $utente \r\n";
print $server "KICK $chan $utente Questo e' un chan PRIVATO,
contatta un operatore!\r\n";
&unban($utente);
}
}
sub checkDB {
$trovato2 = first { /$utente/ } @database;
if (defined $trovato2) { return $trovato2 }
else {
$trovato2 = "assente";
return $trovato2;
}
}
il difetto oltre che con i ^ c'è anche con altri caratteri tipo le
parentesi, il punto di domanda e chissà quali altri che per fortuna non sono
tutti usabili per scriversi un nick, anche se su certe combinazioni lo
script si incazza (se uso [gino si chiude tutto, ma con [gino] è ok) .. ma
questo lo posso risolvere dopo con calma, al momento che sono sicuro che ciò
che scrivo sull'array lo posso rileggere con certezza.