我正在使用IO :: Select来跟踪可变数量的文件句柄以供阅读.我遇到的文档强烈建议不要将select语句与<>(readline)结合起来从文件句柄中读取.
我的情况:
我只会使用一次文件句柄,即当select为我提供文件句柄时,它将被完全使用,然后从select中删除.我将收到一个哈希值和一个可变数量的文件.我不介意这会阻塞一段时间.
有关更多上下文,我是一个发送信息以供我的服务器处理的客户端.每个文件句柄都是我正在与之交谈的不同服务器.服务器完成后,哈希结果将从每个服务器发回给我.在该哈希内部是一个数字,表示要遵循的文件数.
我希望使用readline以便与现有项目代码集成以传输Perl对象和文件.
示例代码:
my $read_set = IO::Select()->new;
my $count = @agents_to_run; #array comes as an argument
for $agent ( @agents_to_run ) {
( $sock, my $peerhost, my $peerport )
= server($config_settings{ $agent }->
{ 'Host' },$config_settings{ $agent }->{ 'Port' };
$read_set->add( $sock );
}
while ( $count > 0) {
my @rh_set = IO::Select->can_read();
for my $rh ( @{ $rh_set } ) {
my %results = <$rh>;
my $num_files = $results{'numFiles'};
my @files = (); …Run Code Online (Sandbox Code Playgroud)