in reply to IP address - long to dottedquad to long
Those are needlessly complicated. You're replicating functions inet_aton and inet_ntoa of the core module Socket:
use Socket qw( inet_aton inet_ntoa ); sub DottedQuadToLong { # Accepts triton.littlefish.ca # Accepts 24.72.30.83 # Accepts 407379539 # etc return unpack('N', inet_aton(shift)); } sub LongToDottedQuad { return inet_ntoa(pack('N', shift)); }
Here are alternatives that only use pack and unpack (but only accept addresses of the form a.b.c.d):
sub DottedQuadToLong { return unpack('N', (pack 'C4', split(/\./, shift))); } sub LongToDottedQuad { return join('.', unpack('C4', pack('N', shift))); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: IP address - long to dottedquad to long
by ruzam (Curate) on Apr 28, 2006 at 20:23 UTC |