在perdoc Socket页面中,它们使用全局文件句柄作为套接字.但是如果我在子进程调用的子例程中创建一个套接字,那么使用Socket仍然可以更好地使用词法文件句柄吗?
像这样:
use strict;
use Socket;
sub sendData
{
my $proto = getprotobyname('tcp');
my $socket;
socket($socket, PF_INET, SOCK_STREAM, $proto);
...
close($socket)
}
Run Code Online (Sandbox Code Playgroud)
代替:
sub sendData
{
my $proto = getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto);
...
close(SOCKET)
}
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,但我不知道这是一种更好的做法还是完全无用的......
谢谢
cjm*_*cjm 10
是的,使用词法文件句柄是一种更好的做法.但是Perl 5.0没有它们,所以有很多旧的代码和文档使用全局文件句柄,而且其中大部分尚未更新为使用词法句柄.
PS你知道你可以说
socket(my $socket, PF_INET, SOCK_STREAM, $proto);
Run Code Online (Sandbox Code Playgroud)
而不是把它my放在上一行,对吗?