首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择undef,undef,undef .XX

选择undef,undef,undef .XX
EN

Stack Overflow用户
提问于 2014-07-14 23:16:23
回答 2查看 1.5K关注 0票数 3

几年前,当我刚开始学习Perl时,我发现自己想说这样的话:

代码语言:javascript
复制
sleep .07;

但这实际上行不通。

有人教我用:

代码语言:javascript
复制
select undef, undef, undef, .07;

而不是。

我一直在想:这意味着什么,为什么会起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-14 23:28:27

select中,描述如下:

代码语言:javascript
复制
...
select RBITS,WBITS,EBITS,TIMEOUT
        This calls the select(2) syscall with the bit masks specified,
        which can be constructed using "fileno" and "vec", along these
        lines:

            $rin = $win = $ein = '';
            vec($rin, fileno(STDIN),  1) = 1;
            vec($win, fileno(STDOUT), 1) = 1;
            $ein = $rin | $win;
...

据推测,这只是一个具有比sleep更高精度的超时值的任意命令。这就是为什么它起作用了。在文件中还进一步提到了这一点:

代码语言:javascript
复制
You can effect a sleep of 250 milliseconds this way:

    select(undef, undef, undef, 0.25);

TL;DR:,这是一种用超时调用select函数的方法。

票数 7
EN

Stack Overflow用户

发布于 2014-07-14 23:30:04

它使用第三种形式的select,如文档所示:

选择RBITS、WBITS、EBITS、TIMEOUT 这将使用指定的位掩码调用select(2)系统调用。 …… 您可以通过这种方式实现250毫秒的睡眠: 选择( undef,0.25);

实现此功能的更好方法是使用Time::HiRes qw(usleep)

代码语言:javascript
复制
use Time::HiRes qw(usleep);

usleep($microseconds);
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24747561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档