加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

什么是“select((select(s),$| = 1)[0])”在Perl中做?

发布时间:2020-12-15 21:25:02 所属栏目:大数据 来源:网络整理
导读:我看到一些可怕的代码写在Perl,但我不能使头或尾的这一个: select((select(s),$|=1)[0]) 它是在一些网络代码,我们用于与服务器通信,我认为它是与缓冲(因为它设置$ |)。 但我不知道为什么有多个选择调用或数组引用。谁能帮我吗? 解决方法 这是一个讨厌的
我看到一些可怕的代码写在Perl,但我不能使头或尾的这一个:
select((select(s),$|=1)[0])

它是在一些网络代码,我们用于与服务器通信,我认为它是与缓冲(因为它设置$ |)。

但我不知道为什么有多个选择调用或数组引用。谁能帮我吗?

解决方法

这是一个讨厌的小习惯用于设置文件句柄而不是STDOUT的自动刷新。

select()接受提供的文件句柄,并且(基本上)用它替换STDOUT,当它完成后,它返回旧的文件句柄。

所以(select($ s),$ | = 1)重定向文件句柄(记住select返回旧的),并设置autoflush($ | = 1)。它在列表((…)[0])中执行此操作,并返回第一个值(它是select调用的结果 – 原始STDOUT),然后将其传递回另一个选择以恢复原始STDOUT文件句柄。 。。

但现在你明白了(好吧,也许;)),这样做:

use IO::Handle;
$fh->autoflush;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读