in reply to Perl Simple IRC Client question

In principle by using select and multiple sockets. But in practice, you will want to look at Bot::BasicBot and/or POE::Component::IRC, or at AnyEvent::IRC.

Replies are listed 'Best First'.
Re^2: Perl Simple IRC Client question
by mlapaglia (Initiate) on Feb 19, 2010 at 01:01 UTC
    I'd like to stick to not having to require modules if it's possible. I got IO::Select working properly, and I can now listen to multiple servers. I have another question though. I'm eventually going to have a large handful of servers, and hard coding each one seems a bit sloppy. I'm trying to use the following code to clean it up a bit:
    my $sock = new IO::Socket::SSL(PeerAddr => 'irc.server2.org', PeerPort + => '6697', Proto => 'tcp') or die "Can't connect\n"; my $sock2 = new IO::Socket::SSL(PeerAddr => 'irc.server1.org', PeerPor +t => '6697', Proto => 'tcp') or die "Can't connect\n"; my %Servers = (server1 => $sock, server2 => $sock2); foreach my $out (keys %Servers) { print $Servers{$out} "NICK mlapaglia\r\n"; print $Servers{$out} "USER mlapaglia\r\n"; }
    but it's failing at print $Servers{$out} "NICK mlapaglia\r\n"; When I try print $sock "NICK mlapaglia\r\n"; it works properly. Am I dereferencing incorrectly?

      You should really use some of the IRC modules instead of writing this yourself. For example if the remote server is very slow (or throttles you), your attempt of blockingly printing a whole line in one go will stall your whole client even if it's just one server that is slow.

      But anyway, see print about how to print to any expression more complex than a simple scalar.

        Ok I've decided to use BasicBot, sorry but I have one more question. I'm trying to override the said subroutine, but failing miserably. I've been googling if there is any special syntax besides writing a sub said { } after the declaration, but it's still using the default subroutine..