9 our @ISA = qw(Exporter);
 
  10 our @EXPORT_OK = qw($IPv6_re);
 
  12 my $IPv4 = "((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))";
 
  13 my $G = "[0-9a-fA-F]{1,4}";
 
  18              "(:$IPv4|:$G(:$IPv4|(:$G){0,2})|:)",
 
  19        "((:$G){0,2}(:$IPv4|(:$G){1,2})|:)",
 
  20        "((:$G){0,3}(:$IPv4|(:$G){1,2})|:)",
 
  21        "((:$G){0,4}(:$IPv4|(:$G){1,2})|:)" );
 
  24 $IPv6_re = "$G:($IPv6_re|$_)" for @tail;
 
  25 $IPv6_re = qq/:(:$G){0,5}((:$G){1,2}|:$IPv4)|$IPv6_re/;
 
  26 $IPv6_re =~ s/\(/(?:/g;
 
  27 $IPv6_re = qr/$IPv6_re/;
 
  34 Regexp::IPv6 - Regular expression for IPv6 addresses
 
  38   use Regexp::IPv6 qw($IPv6_re);
 
  40   $address =~ /^$IPv6_re$/ and print "IPv6 address\n";
 
  44 This module exports the $IPv6_re regular expression that matches any
 
  45 valid IPv6 address as described in "RFC 2373 - 2.2 Text Representation
 
  46 of Addresses" but C<::>. Any string not compliant with such RFC will
 
  49 To match full strings use C</^$IPv6_re$/>.
 
  51 =head1 COPYRIGHT AND LICENSE
 
  53 Copyright (C) 2009, 2010 by Salvador FandiE<ntilde>o
 
  56 This library is free software; you can redistribute it and/or modify
 
  57 it under the same terms as Perl itself, either Perl version 5.10.0 or,
 
  58 at your option, any later version of Perl 5 you may have available.
 
  60 Additionally, you are allowed to use the regexp generated by the
 
  61 module in any way you want, without any restriction. For instance, you
 
  62 are allowed to copy it verbating in your program.