请问在Perl中如何不使用AWK,而能够获取主机名?

请问在Perl中如何不使用AWK,而能够获取主机名?

bash-3.00# hostname
solaris01.jjqing.com


这是我用awk取得$1后传递给PERL的例子:
===============================================

#!/usr/bin/perl -w
$my_hostname = `hostname | awk -F"." '{print \$1}'`;
print $my_hostname;

===============================================

但是现在是在学习perl,我想完全使用perl来实现,不去使用awk,请问应该怎样做呢?

谢谢!
use Sys::Hostname;
    $host = hostname;
#!/usr/bin/perl -w
use Sys::Hostname;
my $host=hostname;
print"$host\n";
谢谢!

但是能否不使用模块,而使用perl一般的语法来实现?

因为我要取得的不仅仅HOSTNAME这一个值,有很多我觉得不能够从SYS模块中取得的,比如说IP地址,因为一个主机可能会有多个IP地址,而只有与主机包相对应的一个,才能被确定为主机IP。。。还有很多其他值的。。

再次感谢!


QUOTE:
原帖由 yingweixu 于 2008-8-15 14:36 发表
#!/usr/bin/perl -w
use Sys::Hostname;
my $host=hostname;
print"$host\n";

这个执行的结果,是solaris01.jjqing.com,我想要的结果是最前面那个单词(solaris01),因此,才想用AWK做一些处理。

谢谢!

==========================
bash-3.00# ./1
solaris01.jjqing.com
==========================
bash-3.00# hostname
solaris01.jjqing.com
split
#!/usr/bin/perl -w
open FILE,"/etc/hosts"||die"Can't open the file!";
chomp(my @info=<FILE>;
my @a=split/\s+/,$info[-1];
my @name=split/\./,$a[1];
print"$name[0]\n";

这是一个很笨的办法!
没想到在perl下要取一个系统参数这么困难啊!

谢谢!我试试看!

另外,我想问问有没有一种简单的方案,我先把hostname的所有输出保存到变量a,然后对a做处理,最后得到solairs01?

#!/usr/bin/perl -w
$a = `hostname`;
$b = 此处使用perl语法取得"solaris01"字段;
print $b;


我的hostname为solaris01.jjqing.com。


QUOTE:
原帖由 jjqing 于 2008-8-15 16:56 发表
没想到在perl下要取一个系统参数这么困难啊!

谢谢!我试试看!

另外,我想问问有没有一种简单的方案,我先把hostname的所有输出保存到变量a,然后对a做处理,最后得到solairs01?

#!/usr/bin/perl -w ...

#!/usr/bin/perl -w
use strict;

my $my_hostname = `hostname`;
$my_hostname =~ s/\..*//;
print $my_hostname;


变量名不要用$a,$b。
perl是超级的awk+sed+grep。
谢谢!

我想再问问,能不能再进一步,把中间的临时变量省略掉,直接用perl将"solaris01.jjqing.com"变成“solaris01"呢?

即将下面两行代码变成一行:
my $my_hostname = `hostname`;
$my_hostname =~ s/\..*//;

请问要怎么做?在SHELL中我知道是用管道符“|”,但是在perl中我不知道怎么做。

谢谢!