File Coverage

blib/lib/Data/Format/Validate/IP.pm
Criterion Covered Total %
statement 10 10 100.0
branch n/a
condition 2 6 33.3
subroutine 4 4 100.0
pod 0 2 0.0
total 16 22 72.7


line stmt bran cond sub pod time code
1             package Data::Format::Validate::IP;
2             our $VERSION = q/0.2/;
3              
4 2     2   159653 use Carp qw/croak/;
  2         19  
  2         90  
5 2     2   9 use base q/Exporter/;
  2         4  
  2         606  
6              
7             our @EXPORT_OK = qw/
8             looks_like_ipv4
9             looks_like_ipv6
10             /;
11              
12             our %EXPORT_TAGS = (
13             q/all/ => [qw/
14             looks_like_ipv4
15             looks_like_ipv6
16             /]
17             );
18              
19             sub looks_like_ipv4 ($) {
20              
21 5   33 5 0 104 $_ = shift || croak q/Value must be provided/;
22 5         35 /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
23             }
24              
25             sub looks_like_ipv6 ($) {
26              
27 7   33 7 0 120 $_ = shift || croak q/Value must be provided/;
28 7         52 /^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$/i
29             }
30             1;
31              
32             =pod
33              
34             =encoding utf8
35              
36             =head1 NAME
37              
38             Data::Format::Validate::IP - A IP validating module.
39              
40             =head1 SYNOPSIS
41              
42             Module that validate IP addressess.
43              
44             =head1 Utilities
45              
46             =over 4
47              
48             =item IP (ipv4)
49              
50             use Data::Format::Validate::IP 'looks_like_ipv4';
51              
52             looks_like_ipv4 '127.0.0.1'; # 1
53             looks_like_ipv4 '192.168.0.1'; # 1
54             looks_like_ipv4 '255.255.255.255'; # 1
55              
56             looks_like_ipv4 '255255255255'; # 0
57             looks_like_ipv4 '255.255.255.256'; # 0
58              
59             =item IP (ipv6)
60              
61             use Data::Format::Validate::IP 'looks_like_ipv6';
62              
63             looks_like_ipv6 '1762:0:0:0:0:B03:1:AF18'; # 1
64             looks_like_ipv6 '1762:ABC:464:4564:0:BA03:1000:AA1F'; # 1
65             looks_like_ipv6 '1762:4546:A54f:d6fd:5455:B03:1fda:dFde'; # 1
66              
67             looks_like_ipv6 '17620000AFFFB031AF187'; # 0
68             looks_like_ipv6 '1762:0:0:0:0:B03:AF18'; # 0
69             looks_like_ipv6 '1762:0:0:0:0:B03:1:Ag18'; # 0
70             looks_like_ipv6 '1762:0:0:0:0:AFFFB03:1:AF187'; # 0
71              
72             =back
73              
74             =head1 CONTRIBUITION
75              
76             This source is on Github:
77              
78             https://github.com/rozcovo/Data-Format-Validate/blob/master/lib/Data/Format/Validate/IP.pm
79              
80             =head1 AUTHOR
81              
82             Created by Israel Batista <>
83              
84             =cut