#!/usr/bin/env perl # # ipnum2name - translate IP addresses in the input to DNS names # # $Id: ipnum2name 687 2010-01-19 15:48:56Z rp $ use warnings; use strict; use Socket; my %ipnum2name; $| = 1; # force output line flushing while (<>) { my @line = split(/\b(\d+\.\d+\.\d+\.\d+)\b/, $_); @line = map { my $fld = $line[$_]; if ($_ % 2 == 0) { $fld; } else { local $_; if ((my @fld = grep { $_ >= 0 && $_ < 256 } split(/\./, $fld)) < 4) { $fld; } else { if (!defined $ipnum2name{$fld}) { my $name = gethostbyaddr(inet_aton($fld), AF_INET); if (!defined $name) { $name = $fld; } $ipnum2name{$fld} = $name; } $ipnum2name{$fld}; } } } 0 .. $#line; print join( '', @line ); }