[Perl] Dove sono gli altri nick?
gambry
gambrys@gmail.com
Ven 20 Gen 2006 20:10:18 CET
Joe Oblivian ha scritto:
[CUT]
> manca
>
> $self->join("#palug");
Ho finito la mia odissea...
L'aggiunta del join(), mi ha distrutto perche' ora i nick erano
esattamente il doppio di quelli presenti nel chan!!
In pratica venivano ripetuti, come se ci fossero due eventi names.
Ho cercato, sia ieri che oggi, la documentazione di Net::IRC, ma niente.
Ho letto in giro (tipo qui http://wholok.com/irc/ ) che il modulo non e'
piu' aggiornato... ma quando mai se e' aggiornato al 30 Aprile 2004?
Comunque, ho trovato la soluzione seguendo questo bellissimo consiglio
nella documentazione ufficiale:
METHOD DESCRIPTIONS:
This section is under construction, but hopefully will be finally
written up by the next release. Please see the irctest script and the
source for details about this module.
(Cazzo che culo che ho con le documentazioni in perl :p)
Quindi mi sono andato a guardare il codice di irctest, e ho visto che
gestisce l'evento 353, e cioe' la risposta alla chiamata names, non
facendo nessuna chiamata names()!!!
Dopo un'attenta analisi con i miei collaboratori, siamo tutti concordi
nel dire che l'evento 353 lo da anche il join normale, insieme al topic
e a non so che altro.
Quindi il codice finale risulta:
#!/usr/bin/perl -w
use strict;
use Net::IRC;
use Data::Dumper;
use vars qw($find_user $status $output);
my $irc_server = 'calvino.freenode.net';
my $irc_port = 6667;
my $irc_nick = 'xambry';
my $channel = '#palug';
my $irc_name = 'Gambry, r u there?';
my $output = './suca.txt';
#$status = {timestamp => scalar(localtime)};
my %event_lookup = (
'endofmotd' => 376,
'names_reply' => 353,
);
my $irc = new Net::IRC;
my $conn = $irc->newconn(
Nick => $irc_nick,
Server => $irc_server,
Port => $irc_port,
Ircname => $irc_name);
$conn->add_global_handler($event_lookup{endofmotd}, \&on_connect);
$conn->add_handler($event_lookup{names_reply},\&on_names_reply);
$irc->start;
sub on_connect {
my $self = shift;
$self->join($channel);
}
sub on_names_reply {
my $self = shift;
my $event = shift;
my @nicks = split(/ /,$event->{args}->[3]);
print Data::Dumper::Dumper(@nicks);
$self->quit;
}
Maggiori informazioni sulla lista
palermo