File Coverage

blib/lib/Regexp/IPv6.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             package Regexp::IPv6;
2              
3             our $VERSION = '0.03';
4              
5 1     1   30732 use strict;
  1         3  
  1         39  
6 1     1   5 use warnings;
  1         2  
  1         288  
7              
8             require Exporter;
9             our @ISA = qw(Exporter);
10             our @EXPORT_OK = qw($IPv6_re);
11              
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}";
14              
15             my @tail = ( ":",
16             "(:($G)?|$IPv4)",
17             ":($IPv4|$G(:$G)?|)",
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})|:)" );
22              
23             our $IPv6_re = $G;
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/;
28              
29             1;
30             __END__