我正在尝试使用Perl的gethostnamebyaddr功能.令人讨厌的是它以标量格式返回整个域名.我想只解析主机名并丢弃其余的主机名.
我正在使用split将域名划分为一个数组,然后只取第一个值,但这似乎不起作用.
#!/usr/bin/perl
use Socket;
my $name;
my $hostname;
my @tmpStr;
$name = gethostbyaddr(inet_aton("192.168.2.3"), AF_INET);
print "$name\n";
@tmpStr = split ".", $name;
$hostname = $tmpStr[0];
print "Host name is $hostname\n";
Run Code Online (Sandbox Code Playgroud)
执行上面的代码时,我得到以下内容:
dc1-ent.ent.ped.local
Host name is
Run Code Online (Sandbox Code Playgroud)
根据这个网站,返回值不是一个字符串,而是一个标量值,所以我分裂它的尝试不起作用.
在我可以拆分它或自己解析出主机名之前,我无法弄清楚如何将它转换为字符串.
点字符对于Perl中的正则表达式具有特殊含义,而split的第一个参数是正则表达式.你需要逃避点:
use warnings;
use strict;
my $name = 'dc1-ent.ent.ped.local';
print "$name\n";
my @tmpStr = split /\./, $name;
my $hostname = $tmpStr[0];
print "Host name is $hostname\n";
Run Code Online (Sandbox Code Playgroud)
这输出:
dc1-ent.ent.ped.local
Host name is dc1-ent
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |