perl中的套接字数组

时间:2014-10-09 09:25:21

标签: arrays perl sockets

我想在perl中添加一个socket数组并添加\n,在每个套接字的末尾,我尝试使用&socket[0],但它不起作用。

my @socket1;
$socket1[0] = IO::Socket::INET->new(
    Type     => SOCK_STREAM,
    PeerAddr => "127.0.0.1",
    Proto    => "tcp",
    PeerPort => $dbase_param{camera_stream}
) or die "Cannot open socket on port " . $dbase_param{camera_stream} . ".\n";

print $socket1[0] "\n";

当我执行print $socket1[0] "\n";时,它将无法编译。

但是如果我不使用数组就可以了:

my $socket1;
$socket1 = IO::Socket::INET->new(
    Type     => SOCK_STREAM,
    PeerAddr => "127.0.0.1",
    Proto    => "tcp",
    PeerPort => $dbase_param{camera_stream}
) or die "Cannot open socket on port " . $dbase_param{camera_stream} . ".\n";

print $socket1 "\n";

3 个答案:

答案 0 :(得分:5)

print的文件句柄需要是一个glob或一个简单的标量(可能是一个BLOCK的结果)。这应该有效:

print { $socket1[1] } "\n";

答案 1 :(得分:5)

请尝试以下语法:

$socket1[0]->print("\n");

答案 2 :(得分:2)

或者,您可以使用syswrite()send()。此外,这是更推荐使用套接字的接口,因为此功能不使用缓冲。由于您使用的是IO :: Socket :: INET对象,因此所有这些函数都可用作方法

$socket[1]->print("\n");
$socket[1]->syswrite("\n");
$socket[1]->send("\n");