Net-TinyIp
view release on metacpan or search on metacpan
lib/Net/TinyIp.pm view on Meta::CPAN
use overload q{""} => \&human_readable;
our $VERSION = "0.08";
sub import {
my $class = shift;
my @tags = @_;
foreach my $tag ( @tags ) {
my $module = join q{::}, $class, "Util", join q{}, map { ucfirst } split m{_}, $tag;
eval "require $module"
or die;
$module->import;
}
}
sub new {
my $class = shift;
my $address = shift;
my %self;
my( $host, $cidr ) = split m{/}, $address;
my $version = $host =~ m{[.]} ? 4 : $host =~ m{[:]} ? 6 : undef;
my $module = join q{::}, $class, "Address", "v$version";
unless ( defined $cidr ) {
$cidr = $module->get( "bits_length" );
}
$self{host} = $module->from_string( $host );
$self{mask} = $module->from_cidr( $cidr );
lib/Net/TinyIp/Address/v4.pm view on Meta::CPAN
Readonly our $BLOCK_LENGTH => 4;
Readonly our $BITS_LENGTH => $BITS_PER_BLOCK * $BLOCK_LENGTH;
Readonly our $SEPARATOR => q{.};
our $BLOCK_FORMAT = q{%03d};
sub from_string {
my $class = shift;
my $str = shift;
return $class->from_bin( join q{}, q{0b}, map { sprintf "%0${BITS_PER_BLOCK}b", $_ } split m{[$SEPARATOR]}, $str );
}
1;
lib/Net/TinyIp/Address/v6.pm view on Meta::CPAN
Readonly our $BLOCK_LENGTH => 8;
Readonly our $BITS_LENGTH => $BITS_PER_BLOCK * $BLOCK_LENGTH;
Readonly our $SEPARATOR => q{:};
our $BLOCK_FORMAT = q{%04x};
sub from_string {
my $class = shift;
my $str = shift;
return $class->from_hex( join q{}, q{0x}, map { $_ } split m{[$SEPARATOR]}, $str );
}
1;
( run in 2.256 seconds using v1.01-cache-2.11-cpan-71847e10f99 )