NAME
POE::Component::IRC::Common - provides a set of common functions for the POE::Component::IRC suite.
SYNOPSIS
use strict;
use warnings;
use POE::Component::IRC::Common qw( :ALL );
my $nickname = '^Lame|BOT[moo]';
my $uppercase_nick = u_irc( $nickname );
my $lowercase_nick = l_irc( $nickname );
my $mode_line = 'ov+b-i Bob sue stalin*!*@*';
my $hashref = parse_mode_line( $mode_line );
my $banmask = 'stalin*';
my $full_banmask = parse_ban_mask( $banmask );
if ( matches_mask( $full_banmask, 'stalin!joe@kremlin.ru' ) ) {
print "EEK!";
}
if ( has_color($message) ) {
print 'COLOR CODE ALERT!";
}
my $results_hashref = matches_mask_array( \@masks, \@items_to_match_against );
my $nick = parse_user( 'stalin!joe@kremlin.ru' );
my ($nick, $user, $host) = parse_user( 'stalin!joe@kremlin.ru' );
DESCRIPTION
POE::Component::IRC::Common provides a set of common functions for the POE::Component::IRC suite. There are included functions for uppercase and lowercase nicknames/channelnames and for parsing mode lines and ban masks.
CONSTANTS
Use the following constants to add color and formatting to IRC messages.
Formatting:
NO_FORMAT
BOLD
UNDERLINE
REVERSE
Colors:
NO_COLOR
WHITE
BLACK
DARK_BLUE
DARK_GREEN
RED
BROWN
PURPLE
ORANGE
YELLOW
LIGHT_GREEN
TEAL
CYAN
LIGHT_BLUE
MAGENTA
DARK_GREY
LIGHT_GREY
$irc->yield('This word is ' . YELLOW . 'yellow' . NO_COLOR
. ' while this word is ' . BOLD . 'bold' . NO_FORMAT);
FUNCTIONS
u_irc
-
Takes one mandatory parameter, a string to convert to IRC uppercase, and one optional parameter, the casemapping of the ircd ( which can be 'rfc1459', 'strict-rfc1459' or 'ascii'. Default is 'rfc1459' ). Returns the IRC uppercase equivalent of the passed string.
l_irc
-
Takes one mandatory parameter, a string to convert to IRC lowercase, and one optional parameter, the casemapping of the ircd ( which can be 'rfc1459', 'strict-rfc1459' or 'ascii'. Default is 'rfc1459' ). Returns the IRC lowercase equivalent of the passed string.
parse_mode_line
-
Takes a list representing an IRC mode line. Returns a hashref. If the modeline couldn't be parsed the hashref will be empty. On success the following keys will be available in the hashref:
'modes', an arrayref of normalised modes; 'args', an arrayref of applicable arguments to the modes;
Example:
my $hashref = parse_mode_line( 'ov+b-i', 'Bob', 'sue', 'stalin*!*@*' ); # $hashref will be: { modes => [ '+o', '+v', '+b', '-i' ], args => [ 'Bob', 'sue', 'stalin*!*@*' ], }
parse_ban_mask
-
Takes one parameter, a string representing an IRC ban mask. Returns a normalised full banmask.
Example:
$fullbanmask = parse_ban_mask( 'stalin*' ); # $fullbanmask will be: 'stalin*!*@*';
matches_mask
-
Takes two parameters, a string representing an IRC mask ( it'll be processed with parse_ban_mask() to ensure that it is normalised ) and something to match against the IRC mask, such as a nick!user@hostname string. Returns a true value if they match, a false value otherwise. Optionally, one may pass the casemapping ( see u_irc() ), as this function uses u_irc() internally.
matches_mask_array
-
Takes two array references, the first being a list of strings representing IRC mask, the second a list of somethings to test against the masks. Returns an empty hashref if there are no matches. Matches are returned are arrayrefs keyed on the mask that they matched.
parse_user
-
Takes one parameter, a string representing a user in the form nick!user@hostname. In a scalar context it returns just the nickname. In a list context it returns a list consisting of the nick, user and hostname, respectively.
has_color
-
Takes one parameter, a string of IRC text. Returns 1 if it contains any IRC color codes, 0 otherwise. Useful if you want your bot to kick users for (ab)using colors. :)
has_formatting
-
Takes one parameter, a string of IRC text. Returns 1 if it contains any IRC formatting codes, 0 otherwise.
strip_color
-
Takes one paramter, a string of IRC text. Returns the string stripped of all IRC color codes.
strip_formatting
-
Takes one paramter, a string of IRC text. Returns the string stripped of all IRC formatting codes.
irc_ip_get_version
-
Try to guess the IP version of an IP address.
Params: IP address Returns: 4, 6, 0(unable to determine)
$version = ip_get_version ($ip)
irc_ip_is_ipv4
-
Check if an IP address is of type 4.
Params: IP address Returns: 1 (yes) or 0 (no)
ip_is_ipv4($ip) and print "$ip is IPv4";
irc_ip_is_ipv6
-
Check if an IP address is of type 6.
Params: IP address Returns: 1 (yes) or 0 (no)
ip_is_ipv6($ip) && print "$ip is IPv6";
AUTHOR
Chris 'BinGOs' Williams
IP functions are shamelessly 'borrowed' from Net::IP by Manuel Valente