perl如何立即刷新文件缓冲区

perl中如何使缓冲区自动刷新
    

回复 #3 xdwjack 的帖子

  1. perldoc -f select
复制代码

$|这个变量是和对应的文件句柄挂钩的
默认对STDOUT操作
你如果想操作其他文件句柄就要先select,写的tricky一点,比如你想设置$filehadler这一文件句柄的auto flush则
  1. select (select ($filehandler),$|=1)[0];
复制代码

       $|将对当前select的FILEHANDLE起作用,默认是STDOUT。
  使用方法如下:
  $old = select FILEHANDLE;
  $| = 1; #autoflush
  select $old;
  
  对某些对象,还可以直接使用autoflush方法,方法如下:
  use IO::Socket;
  $socket = IO::Socket::INET->new(...);
  $socket->autoflush(1); #但经过测试,似乎不起作用,不清楚为什么

附:不起作用的原因是使用了类似 $message = <$socket>这样的用法,使用<>应该会等有回车才会返回,导致程序会停在这个语句上。如果使用$socket->recv($message, 1000)则没有问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值