【发布时间】:2011-05-24 06:20:58
【问题描述】:
考虑以下 Perl 脚本的 sn-p:
use IO::Socket;
# ...
my $sock = IO::Socket::INET->new(
PeerAddr => $host, # e.g. "google.com"
PeerPort => $port, # e.g. 80
Proto => 'tcp'
);
die("no socket: $!") unless $sock;
# ...
在正常情况下一切正常,但是当主机系统的 Internet 连接处于非活动状态时,“sock”变量为空,$! 显示消息“无效参数”。
我是在不恰当地使用 INET 构造函数还是这是预期的行为?如果是后者,有没有办法区分“网络接口不活动”错误和构造函数方法的真正无效参数?
【问题讨论】:
-
@ikegami:不幸的是,Mac OS 10.6.7 上的 Perl 5.8.9 和 Linux 2.6.35(Ubuntu 10.10)上的 Perl 5.10.1 都没有
$^E与$!不同的错误. -
那么抱歉,这就是系统提供的所有信息。或者可能某处缺少错误检查,而真正的错误正在被无用的错误覆盖。
标签: perl sockets invalid-argument inet