sub syb_gethostbyaddr { my $self = shift; my $class = ref($self); my ($my_ipaddr) = @_; return (gethostbyaddr(inet_aton($my_ipaddr), AF_INET)) } #### sub numtoname { local ($_) = @_; unless (defined $numtoname{$_}) { my (@a) = gethostbyaddr(pack('C4', split(/\./)),2); $numtoname{$_} = @a > 0 ? $a[0] : $_; } return $numtoname{$_}; } #### package SybaseInterfaces; .... my %lookup_iptoname = (); sub syb_gethostbyaddr { my $self = shift; my $class = ref($self); my ($my_ipaddr) = @_; # We cache the name lookups to increase performance and reduce network i/o unless (defined $SybaseInterfaces::lookup_iptoname{$my_ipaddr}) { $SybaseInterfaces::lookup_iptoname{$my_ipaddr} = gethostbyaddr(inet_aton($my_ipaddr), AF_INET); } return ( $SybaseInterfaces::lookup_iptoname{$my_ipaddr} ); }