[%
  # Return an array of IPs from a given hostname
  #
  # @param argv.name    The hostname to lookup
  # @param argv.type    The address family to lookup ("AF_INET" for IPv4,
  #                     "AF_INET6" for IPv6, and "" for both)
  # @return out         The array of ips
-%]
[% out = [] -%]
[% LOAD_PERL => 1 -%]
[% PERL -%]
   use Socket qw(:all);

   my $err;
   my $ipaddr;
   my @res;
   my @ips;

   ($err, @res) = getaddrinfo("[% argv.name %]", "", {socktype => SOCK_RAW, family => [% argv.type %]});
   while( my $ai = shift @res ) {
      ($err, $ipaddr) = getnameinfo($ai->{addr}, NI_NUMERICHOST, NIx_NOSERV);
      push(@ips, $ipaddr);
   }

   $stash->set(out => \@ips);
[% END -%]
[% out = out.sort -%]
