gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:59:10 24 4
gpt4 key购买 nike

我已经看到了用Perl编写的一些可怕的代码,但是我无法做到这一点:

select((select(s),$|=1)[0])

这是我们用来与服务器通信的一些网络代码,我认为这与缓冲有关(因为它设置了 $|)。

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

最佳答案

在STDOUT以外的文件句柄上设置自动刷新是一个讨厌的小习惯。
select()接受提供的文件句柄,并(基本上)用它替换STDOUT,并在完成后返回旧的文件句柄。

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

但是现在您了解了(嗯,也许;)),请改为执行此操作:

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

关于perl - “select((select(s),$|=1)[0])”在Perl中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/196754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com