|
小弟刚学perl不久,请帮忙看看这个程序帮我解答一些问题!
#!/usr/bin/perl -w
use strict;
my $ip;
my $i;
my $j=0;
my $n=0;
if(-e "ip_dns.txt" and -w "ip-dns.txt"){
rename("ip_dns.txt","old.txt") or die "error:$!";
}
open(FILE,">ip_dns.txt") or die"open file error:$!";
open(NOUSE,">nouse.txt") or die "open file error:$!";
foreach $i (1..254){
$ip="192"."\."."168"."\."."0"."\."."$i";
my @cmd=`ping -a -n 1 $ip`;
if($cmd[3]=~/^Reply/){
my(undef,$hostname,undef)=split(/ /,$cmd[1],3);
if($hostname!~/(\d+\.\d+\.\d+\.\d+)/){
print "ip"." "."$hostname\n";
print FILE "$ip"." "."$hostname\n";
$n++;
}
}else{
print "$ip"." "."no use!"."\n";
print NOUSE "$ip"." "."未使用"."\n";
$j++;
}
}
print FILE "总共搜索到了$n个IP与DNS对应列!";
close FILE;
print NOUSE "总共有$j个IP地址未使用!";
close NOUSE;
其中
1。我对如何再perl中如何使用命令不清楚,@cmd是一个数组为什么能够执行ping呢?
2。还有就是返回值的问题?$cmd[3]是数组@cmd的元素为什么是ping的返回值呢?
3。这句话不懂my(undef,$hostname,undef)=split(/ /,$cmd[1],3);
4。就是对于一些出现在程序里的如$_和@_等等,他们有时是这个意思有时又是那个意思,请问在什么地方能够查到他们的用法
5。对于use中使用的模块,模块中所有的函数在linux下使用什么命令可以查到
谢谢 |
|