将文件句柄与 IO::Select::can_read() 返回的 glob 进行比较
我正在尝试通过 perl 中的 IO::Select 管理三个文件句柄。我有 1 个输入句柄、1 个输入/输出句柄和 1 个输出句柄。在处理 Select 的 can_read() 和 can_write() 返回数组时,我在确定哪个文件句柄是哪个文件句柄时遇到了一些麻烦;
下面的示例
关于如何实际比较这两个文件句柄有什么建议吗?我尝试过标量,尝试过引用,没有引用等等。我想不出为什么这不起作用。
#!/usr/bin/perl
use strict;
use warnings;
use IO::Select;
open(INPUT, "/dev/fd/3") or die "Unable to open input! $!";
my $stdin_buf;
# Main loop
while (1)
{
foreach my $read_fh ($select->can_read(10)) # This DOES return INPUT as being readable
{
if ($read_fh == \*INPUT) # THIS fails.
{
read($read_fh, $stdin_buf, 512);
}
}
}
I am trying to manage three filehandles via IO::Select in perl. I have 1 input handle, 1 input/output handle, and 1 output handle. Im having a little trouble determining which filehandle is which when processing Select's return arrays of can_read() and can_write();
Example below
Any advice on how to actually compare these two filehandles? I've tried scalars, i've tried references, no references, etc. I can't think of why this isn't working.
#!/usr/bin/perl
use strict;
use warnings;
use IO::Select;
open(INPUT, "/dev/fd/3") or die "Unable to open input! $!";
my $stdin_buf;
# Main loop
while (1)
{
foreach my $read_fh ($select->can_read(10)) # This DOES return INPUT as being readable
{
if ($read_fh == \*INPUT) # THIS fails.
{
read($read_fh, $stdin_buf, 512);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我成功了。这是使用引用和 eq 的组合(我在修复引用之前已经尝试过);
工作代码:
I got it working. It was a combination of using references and eq (which i had tried prior to fixing references);
working code:
使用
eq
而不是==
进行这种比较。Use
eq
instead of==
for this kind of comparison.