首页›文章›perl 通过gethostbyaddr函数将IP转换为域名

perl 通过gethostbyaddr函数将IP转换为域名

计算机技术 · perl 程序开发2011-11-281次浏览0 个评论

在上一篇文章中,我们说了perl提供了函数gethostbyname将域名或主机名转换为IP地址,同样,perl也提供了一个函数将将IP地址转换为主机名或域名,这个函数就是gethostbyaddr()。下面我们通过一个程序来了解以下这个函数的使用:

perl
#! /usr/bin/perl
# file: gethostbyaddr.pl
use strict;
use Socket;
my $ADDR_PAT = '^\d+\.\d+\.\d+\.\d+$';
while(<>)
{
    chomp;
    die "$_: Not a valid address" unless /$ADDR_PAT/o;
    my $hostname = gethostbyaddr(inet_aton($_),AF_INET);
    $hostname ||= '?';
    print "$_ => $hostname\n";
}

同样的,我们也建立一个包含IP地址列表的文档ip.txt :

text
ip.txt
220.181.111.147
209.85.148.99
222.73.10.153
192.168.1

这个程序的执行结果如下:

perl
[zhijun@Hunter perl]$ ./gethostbyaddr.pl ip.txt
220.181.111.147 => ?
209.85.148.99 => fra07s07-in-f99.1e100.net
222.73.10.153 => ?
192.168.1: Not a valid address at ./gethostbyaddr.pl line 10, <> line 4.
[zhijun@Hunter perl]$

程序解析:
在程序的第6行,通过正在表达式将符合IP格式的行读入,如果不符合IP地址的格式要求,我们就输出错误,如果没有成功解析出域名,那程序就会输出“?”

评论

0

评论加载中…

发表评论

0/2000