这里的代码是有效的...问题是当从某个站点无法取IP时,脚本停止。是否有某种方法使脚本工作甚至IP形式某些网站无法采取?我需要像VB On Error Resume Next ...
一样our $file = abs_path("site.txt");
open (FH, "< $file") or die "Can't open $file for read: $!";
our @lines;
while (<FH>) {
chomp($hostname="$_"); #change this to your hostname
our($addr)=inet_ntoa((gethostbyname($hostname))[4]);
our @newarr;
push(@newarr,$addr); }
答案 0 :(得分:0)
Perl的异常处理机制是eval。
我会重新编写您的代码(未经测试),如下所示:
use strict;
use warnings;
use Socket;
my $file = 'test.txt';
open my $fh, '<', $file
or die "Can't open $file for read: $!";
my @addr;
while (my $hostname = <$fh>) {
last unless $hostname =~ /\S/;
$hostname =~ s/\s+\z//;
my $ip = gethostbyname $hostname;
$ip = defined($ip) ? inet_ntoa $ip : '';
push @addr, [$hostname, $ip];
}
close $fh
or die "Cannot close '$file': $!";
use YAML;
print Dump \@addr;
请注意以下事项:
our
变量具有包范围<$fh>
的返回值分配给变量,请在while
条件下执行此操作,而不要弄乱$_
发布代码时,请发布至少有合理编译机会的代码。