我想在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";
答案 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");