Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5361819
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2008-11-16 07:56:36

[tips]perl的输出缓冲
Submitted by on 2008, April 25, 2:14 PM.
      今天写一个小脚本的时候,需要即时输出当前进度到命令行上,并即时将重要数据写入报告文件中。但是perl默认是有输出缓冲的,显示到命令行上必须以\n结尾才行,输出到文件中,回车了都不行,非得要等缓冲区满了。
代码:

select( STDOUT );
$| = 1;
open( REPORT, ">report.txt" ) || die "create report error: $!\n";
select( REPORT );
$| = 1;
select( STDOUT );

      在写入报告和输出进度之前这样处理一下就可以了。第一句是选择标准输出句柄为当前默认输出句柄,并设置为不缓冲方式。然后选择文件句柄为默认输出句柄,设置为不缓冲模式。再最后重新设置STDOUT为默认输出句柄,少了这一句的话,标准输出就被重定向到文件里面去了。

      这样就会即时写入报告,不用担心丢失数据了。即使中途中止了程序,也有一部分结果在。做个小tip,免得忘记了,呵呵。
转在
阅读(1521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~