#!/usr/bin/perl use strict; use warnings; use IO::Socket; use Switch; use Cwd; use XML::RSS::Feed; use LWP::Simple qw(get); use threads; my $cwd = getcwd; my $tmpdir = $cwd . "/tmp"; my $peeraddr = "irc.freenode.net"; my $peerport = 6667; my $nick = "Paw2"; my $user = "caca"; my $realname = "rocks"; my $chan = "#zork"; my $socket = new IO::Socket::INET(PeerAddr => $peeraddr, PeerPort => $peerport, Proto => 'tcp') or die "Couldn't connect!\n"; print $socket "NICK $nick\r\n"; print $socket "USER $user 65.34.212.49 $peeraddr $realname\r\n"; while (my $input = <$socket>) { my @word = $input; my $elements = scalar(@word); my $server = $socket->peerhost; print "$input\n"; if ( $input =~ /^PING/ ) { print $socket ("PONG :$peeraddr\r\n"); } if ((index $input, " 376 ") ne -1) { print "Conectado a $server - entrando a canales..\n"; print $socket "JOIN #ZOrK\n"; my $thread = threads->create(\&activate_feeds, $chan, $socket); $thread->detach(); } undef @word; } sub activate_feeds { my $socket = $_[1]; my $chan = $_[0]; my $feed = XML::RSS::Feed->new( url => "http://mitworld.mit.edu/rss/new.xml" , name => $nick . "rsstemp", delay => 10, tmpdir => $tmpdir, debug => 0, ); $feed->pre_process; $feed->max_headlines( 2 ); $feed->parse(get($feed->url)); print "$_->headline\n" for $feed->late_breaking_news; print $socket "PRIVMSG :$chan $_->headline\n" for $feed->late_breaking_news; print $socket "PRIVMSG :$chan hola!\r\n"; }