0

我在linux机器上试过这个

my $a =  $ENV{HOSTNAME};
print "\nhostname = $a\n";

我明白了,

hostname = sims5.eng.netapp.com

我在 Solaris 中也尝试过,但我什么也没得到。

hostname = 

我可以使用下面的代码,

use Sys::Hostname;
$host = hostname;

但是有没有其他方法可以在没有在 Solaris 机器中导入 Sys::Hostname 的情况下获取主机名。

谢谢。

4

2 回答 2

3

如果您真的不想使用模块,您可以从以下文件中读取主机名: /etc/nodename

于 2013-05-21T07:02:48.507 回答
1

这是@raina77ow 建议使用的来源Sys::Hostname

my $host = hostname() or warn "No hostname";

sub hostname {
  require "sys/syscall.ph";
  require "sys/systeminfo.ph";
  my $host = "\0" x 65; ## preload scalar
  syscall(&SYS_systeminfo, &SI_HOSTNAME, $host, 65) != -1 or return;

  $host =~ tr|\0\r\n||d;
  return $host;
}
于 2013-05-21T06:22:45.677 回答