use strict; use warnings; use Switch; use Net::IRCBot; my %binds=();&rehash('config.txt');&rehash('methods.txt'); my $ircBot=new Net::IRCBot(%{$binds{'server'}}); my $conn = $ircBot->connect; sub echo{print "$_[0]\r\n";} sub rehash { print "Rehashing files..."; my $file = $_[0]; my $contents=(); open ('file', "$file"); while (my $record = ) {$contents.=$record} close('file'); eval($contents); print "Complete.\r\n"; } sub start{ my $buf = ""; my $sock = $ircBot->{'conn'}; while($buf = <$sock>){ if ($buf =~ /^PING\s:(.*)\r/){$ircBot->sendData("PONG $1");} elsif ($buf =~ /^:$ircBot->{'server'} (.*)/){$binds{'subs'}{'on_ServerMsg'}($1);} elsif ($buf =~ /^:(.*?)!(.*?)@(.*?) (.*?) (:$ircBot->{'channel'}|$ircBot->{'channel'}|$ircBot->{'nick'})( (.*?) (.*)\r| :(.*)\r|\r)/){ switch ("$4"){ case "KICK" {$binds{'subs'}{'on_Kick'}(@_);} case "PART" {$binds{'subs'}{'on_Part'}(@_);} case "JOIN" {$binds{'subs'}{'on_Join'}(@_);} case "MODE" {$binds{'subs'}{'on_Mode'}(@_);} case "NOTICE" {} case "PRIVMSG" {$binds{'subs'}{'on_PrivMsg'}($1,$4,$7);} else {echo($buf);} } }else{ $binds{'subs'}{'on_Unknown'}($buf); } } } &start;