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

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

      在写入报告和输出进度之前这样处理一下就可以了。第一句是选择标准输出句柄为当前默认输出句柄,并设置为不缓冲方式。然后选择文件句柄为默认输出句柄,设置为不缓冲模式。再最后重新设置STDOUT为默认输出句柄,少了这一句的话,标准输出就被重定向到文件里面去了。
      这样就会即时写入报告,不用担心丢失数据了。即使中途中止了程序,也有一部分结果在。做个小tip,免得忘记了,呵呵。

perl的输出缓冲的更多相关文章

  1. PHP输出缓冲(Output Buffering)

    什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题~其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备 ...

  2. PHP 输出缓冲控制(Output Control) 学习

    php 缓冲简介 其实我对php ob 系列印象还是很模糊,具体怎么玩的,还不是很了解,平时curd,确实对这些内容没有深入.作为phper 甚是惭愧.网上搜了一通,互相copy,代码运行不能出现作者 ...

  3. php flush()刷新不能输出缓冲的原因分析

    在php程序编写中,flush()的使用率还是挺高的,它在网页表现即时信息效果时发挥了极为重要的作用,比如之前写的php实现限制文件下载速度的代码实例,flush()就起了举足轻重的作用,是进度条实现 ...

  4. PHP输出缓冲控制

    说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会 向磁盘写入的,而是写到buffer中,当buffer写 ...

  5. PHP输出缓冲控制- Output Control 函数应用详解

    说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满 ...

  6. PHP中刷新输出缓冲

    http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html PHP中刷新输出缓冲buffer是一个内存地址空间,Linux系统默认大小一 ...

  7. PHP中输出缓冲

    在PHP中,当运行echo,print的时候,输出并没有马上通过tcp传给client浏览器显示, 而是将数据写入php buffer.php output_buffering机制,意味在tcp bu ...

  8. (转载)PHP中刷新输出缓冲

    (转载)http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html PHP中刷新输出缓冲buffer是一个内存地址空间,Linux系统默 ...

  9. (转载)php flush()刷新不能输出缓冲的原因分析

    (转载)http://www.webkaka.com/tutorial/php/2012/110628/ 在php程序编写中,flush()的使用率还是挺高的,它在网页表现即时信息效果时发挥了极为重要 ...

随机推荐

  1. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

  2. UDP通信 Java

    public class UdpServerTest { /** * @param args * @throws SocketException */ public static void main( ...

  3. 仿战旗tv

    模仿战旗tv做的一个小项目,还需继续完善. 以下为链接地址: https://github.com/NearMilk/ZhanqiTV

  4. string和stringbuilder

    1)String是一个引用类型,一旦字符串被创建,就不能修改 例如: String a="AAA"; String b=a; a与b值相同,但不是同一个对象: 每次使用 Syste ...

  5. MVC3中 swfupload 按钮不显示 解决方案

    这两天在做图片上传并显示的功能,之前就用过swfupload,觉得很不错,之前是用asp.net webform做的,这次的项目是用asp.net MVC3来做,视图引擎用的是Razor. 将js文件 ...

  6. 三栏布局的n种实现

    本文主要讨论左右边栏固定宽度,中间栏填满其余空间的布局.至于其他类型,基本上也就是半斤和八两.每一种布局都会有个Demo,个人依然认为文章里帖代码并没有Demo来的直接.所以正文负责解释,源码参见De ...

  7. [Guava官方文档翻译] 3. 前置条件检查(Preconditions Explained)

    本文地址:http://www.cnblogs.com/hamhog/p/3536964.html 前置条件检查 Guava提供了一些检查前置条件的utilities.我们强烈建议静态import这些 ...

  8. Nginx 域名转发

    例如访问www.b.cn直接跳到www.a.cn上去,又不想多域名捆绑一个目录. server { listen 80; server_name www.b.cn; rewrite ^/(.*)$ h ...

  9. STM32F40xxx 与 STM32F41xxx Flash结构详解

    本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重!   硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C主芯片型号:ST ...

  10. 前端资源多个产品整站一键打包&包版本管理(四)—— js&css文件文件打包并生成哈希后缀,自动写入路径、解决资源缓存问题。

    问题: 当我们版本更新的时候,我们都要清理缓存的js跟css,如何使得在网页中不需要手动清理呢? 答案: 生成带有哈希后缀的js跟css文件 1.文件路径 路径中的conf.js 是用于放置全局打包的 ...