1: sub numtoname { 2: local ($_) = @_; 3: unless (defined $numtoname{$_}) { 4: my (@a) = gethostbyaddr(pack('C4', split(/\./)),2); 5: $numtoname{$_} = @a > 0 ? $a[0] : $_; 6: } 7: return $numtoname{$_}; 8: } #### foreach (1 .. 3) { foo($_ + 1); print "$_\n"; } sub foo { $_ = shift; $_ += 7; } #### sub numtoname { my $address = shift; unless (defined $numtoname{$address}) { my (@a) = gethostbyaddr(pack('C4', split(/\./, $address)),2); $numtoname{$address} = @a > 0 ? $a[0] : $address; } return $numtoname{$address}; }