Search code examples
perlipv6inet-aton

inet_ntoa for ipv6 in perl


I am new to perl and I am trying to convert an ipv6 address in network format to the ascii string format. I could do this for ipv4 address using the "inet_ntoa" function in the "Socket" module. How to do this for ipv6 address without installing any new modules?


Solution

  • Use inet_ntop as recommended by perldoc Socket:

    $string = inet_ntoa $ip_address

       Takes a packed binary address structure such as returned by
       unpack_sockaddr_in() (or a v-string representing the four octets of the
       IPv4 address in network order) and translates it into a string of the form
       "d.d.d.d" where the "d"s are numbers less than 256 (the normal
       human-readable four dotted number notation for Internet addresses).
    
       This IPv4-only function is provided largely for legacy reasons.
       Newly-written code should use getnameinfo() or inet_ntop() instead for
       IPv6 support.
    

    $string = inet_ntop $family, $address

       Takes an address family and a packed binary address structure and
       translates it into a human-readable textual representation of the address;
       typically in "d.d.d.d" form for "AF_INET" or "hhhh:hhhh::hhhh" form for
       "AF_INET6".
       See also getnameinfo() for a more powerful and flexible function to turn
       socket addresses into human-readable textual representations.