使用内置 Perl 模块捕获短主机名?

the*_*ien 4 perl

有没有更干净的方法

use Sys::Hostname qw(hostname);

my $hostname = hostname();
$hostname =~ s/\.domain//;
Run Code Online (Sandbox Code Playgroud)

基本上,是否可以在不运行两个$hostname分配且不使用其他模块的情况下将主机名剥离为其短名称?

xxf*_*xxx 6

使用Sys::Hostname

use Sys::Hostname;

my ($short_hostname) = split /\./, hostname(); # Split by '.', keep the first part
Run Code Online (Sandbox Code Playgroud)

使用系统主机名命令:

chomp(my ($short_hostname) = `hostname | cut -f 1 -d.`);
Run Code Online (Sandbox Code Playgroud)


Ola*_*che 6

您可以使用Net::Domain'shostname代替

返回可用于标识主机的 FQDN 的最小部分。

use Net::Domain qw(hostname);
my $hostname = hostname();
Run Code Online (Sandbox Code Playgroud)

无需额外模块,调用外部命令 hostname -s

-s, --short
显示短主机名。这是在第一个点处剪切的主机名。

chomp(my $hostname = `hostname -s`);
Run Code Online (Sandbox Code Playgroud)