-
-
16 Oct 2016 11:37:14 UTC
- Distribution: Parse-IRC
- Module version: 1.22
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (1869 / 0 / 0)
- Kwalitee
Bus factor: 1- 49.56% Coverage
- License: perl_5
- Perl: v5.6.0
- Activity
24 month- Tools
- Download (18.69KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- none
- Reverse dependencies
- CPAN Testers List
- Dependency graph
- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- FUNCTION INTERFACE
- OBJECT INTERFACE
- KUDOS
- SEE ALSO
- AUTHOR
- COPYRIGHT AND LICENSE
NAME
Parse::IRC - A parser for the IRC protocol.
VERSION
version 1.22
SYNOPSIS
General usage:
use strict; use Parse::IRC; # Functional interface my $hashref = parse_irc( $irc_string ); # OO interface my $irc_parser = Parse::IRC->new(); my $hashref = $irc_parser->parse( $irc_string );
Using Parse::IRC in a simple IRC bot:
# A simple IRC bot using Parse::IRC use strict; use IO::Socket; use Parse::IRC; my $parser = Parse::IRC->new( public => 1 ); my %dispatch = ( 'ping' => \&irc_ping, '001' => \&irc_001, 'public' => \&irc_public ); # The server to connect to and our details. my $server = "irc.perl.moo"; my $nick = "parseirc$$"; my $login = "simple_bot"; # The channel which the bot will join. my $channel = "#IRC.pm"; # Connect to the IRC server. my $sock = new IO::Socket::INET(PeerAddr => $server, PeerPort => 6667, Proto => 'tcp') or die "Can't connect\n"; # Log on to the server. print $sock "NICK $nick\r\n"; print $sock "USER $login 8 * :Perl IRC Hacks Robot\r\n"; # Keep reading lines from the server. while (my $input = <$sock>) { $input =~ s/\r\n//g; my $hashref = $parser->parse( $input ); SWITCH: { my $type = lc $hashref->{command}; my @args; push @args, $hashref->{prefix} if $hashref->{prefix}; push @args, @{ $hashref->{params} }; if ( defined $dispatch{$type} ) { $dispatch{$type}->(@args); last SWITCH; } print STDOUT join( ' ', "irc_$type:", @args ), "\n"; } } sub irc_ping { my $server = shift; print $sock "PONG :$server\r\n"; return 1; } sub irc_001 { print STDOUT "Connected to $_[0]\n"; print $sock "JOIN $channel\r\n"; return 1; } sub irc_public { my ($who,$where,$what) = @_; print "$who -> $where -> $what\n"; return 1; }
DESCRIPTION
Parse::IRC provides a convenient way of parsing lines of text conforming to the IRC protocol ( see RFC1459 or RFC2812 ).
FUNCTION INTERFACE
Using the module automagically imports 'parse_irc' into your namespace.
parse_irc
-
Takes a string of IRC protcol text. Returns a hashref on success or undef on failure. See below for the format of the hashref returned.
OBJECT INTERFACE
CONSTRUCTOR
new
-
Creates a new Parse::IRC object. One may specify
debug => 1
to enable warnings about non-IRC protcol lines. Specifypublic => 1
to enable the automatic conversion of privmsgs targeted at channels topublic
instead ofprivmsg
. Specifyctcp => 1
to enable automatic conversion of privmsgs and notices with CTCP/DCC type encoding toctcp
,ctcpreply
anddcc_request
.
METHODS
parse
-
Takes a string of IRC protcol text. Returns a hashref on success or undef on failure. The hashref contains the following fields:
prefix command params ( this is an arrayref ) raw_line
For example, if the filter receives the following line, the following hashref is produced:
LINE: ':moo.server.net 001 lamebot :Welcome to the IRC network lamebot' HASHREF: { prefix => ':moo.server.net', command => '001', params => [ 'lamebot', 'Welcome to the IRC network lamebot' ], raw_line => ':moo.server.net 001 lamebot :Welcome to the IRC network lamebot', }
KUDOS
Based on code originally developed by Jonathan Steinert and Dennis Taylor
SEE ALSO
http://www.faqs.org/rfcs/rfc1459.html
http://www.faqs.org/rfcs/rfc2812.html
AUTHOR
Chris Williams <chris@bingosnet.co.uk>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Chris Williams, Jonathan Steinert and Dennis Taylor.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Module Install Instructions
To install Parse::IRC, copy and paste the appropriate command in to your terminal.
cpanm Parse::IRC
perl -MCPAN -e shell install Parse::IRC
For more information on module installation, please visit the detailed CPAN module installation guide.