http://qs1969.pair.com?node_id=412812


in reply to Net:Addr

I went to report the doc error, and found a major, easy-to-fix bug that's been ignored for two years. ipv4_chkip will pass any string of four or more integers between 0 and 255 connected by .'s. The deal-breaker here is the 'four or more' instead of 'exactly four.'

So I can't recommend it. Perhaps try Regexp::Common instead.

use Net::IPv4Addr qw(:all); use Regexp::Common qw(net); my @var = qw(23.23.109.103 12324.123.12.1 1.2.3.4.5.6); print "Net::IFv4Addr:\n"; ipv4_chkip($_) and print "$_ is good\n" for @var; print "Regexp::Common:\n"; /^$RE{net}{IPv4}$/ and print "$_ is good\n" for @var;

produces

Net::IFv4Addr: 23.23.109.103 is good 1.2.3.4.5.6 is good Regexp::Common: 23.23.109.103 is good

Note that you do need to anchor the start and end of the regexp with ^ and $, 'cause just /$RE{net}{IPv4}/ would match 312.45.32.4.