sub parse_ipv4 { local *_ = \(@_ ? $_[0] : $_); /^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$/ && $1 < 256 && $2 < 256 && $3 < 256 && $4 < 256 or return undef; return unpack('N', pack('C4', $1, $2, $3, $4)); }