in reply to program to differentitate IPV4 and IPV6 address

if ( $addr =~ /\./ ) { print "IPv4" } else { print "IPv6" }

I know it's not exactly standards based, but there aren't any dots in IPv6 addresses. Yes, of course, the hostname could have dots, but that's not an IP address either.

Replies are listed 'Best First'.
Re^2: program to differentitate IPV4 and IPV6 address
by stevieb (Canon) on May 22, 2012 at 00:45 UTC

    This is precisely where my mind was when I read the question, but to be accurate, you'd have to reverse the logic a bit. Because RFC 4291 allows for v4 mapped addresses (IPv4 addresses embedded within the v6 address), searching for a dot may give false positives in rare circumstances. The following corrects that problem unambiguously:

    if ( $addr =~ /:/ ) { print "IPv6"; } else { print "IPv4"; }