PERL如何强制输出??

suyupin 2005-03-24 01:40:40
PERL如何强制输出??类似与C/C++ 的fflush()函数的?
...全文
213 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzxyz1111 2005-03-24
  • 打赏
  • 举报
回复
我觉得fflush的作用不在于想实时输出,而是什么时候调用fflush,就可以输出,也许是凑上一堆再输出。也许是一个字符就输出,之类的。而实时输出显然只是要求每个字符都输出。
chenshibing 2005-03-24
  • 打赏
  • 举报
回复
没懂楼主的意思
如果是像楼上那样只要实时输出的话不是只要
$|=1;
就可以了么
xyzxyz1111 2005-03-24
  • 打赏
  • 举报
回复
oops
第2个代码段应该为

print "abc";
flock(STDOUT, LOCK_EX); #lock
flock(STDOUT, LOCK_UN); #unlock
sleep 5;
print "def\n";
xyzxyz1111 2005-03-24
  • 打赏
  • 举报
回复
print 一般是把字符串放到缓冲区中,只有遇到\n等符号的时候才会输出。强制输出世纪上就是把缓冲区中的符号在还没有遇到\n的时候就输出。

我在perl的文档里找了一会,发现有这么一句
To avoid the possibility of miscoordination, Perl now flushes FILEHANDLE before locking or unlocking it.

所以可以用flock来实现

对比一下代码

#没有强制输出的
print "abc";
sleep 5;
print "def\n";

#使用强制输出的
print "abc";
sleep 5;
flock(STDOUT, LOCK_EX); #lock
flock(STDOUT, LOCK_UN); #unlock
print "def\n";

第一个abc在停止5秒后才同def一起打印出来, 而第二个abc则在停止之前就打印出来了,从而实现了fflush的功能。


bulala 2005-03-24
  • 打赏
  • 举报
回复
你可以使用 print STDOUT """;
print STDERR "";等
winter_sui 2005-03-24
  • 打赏
  • 举报
回复
强制输出??什么意思,是想把命令的结果显示出来么?
#!/usr/bin/perl -w
`ls`;
比如这个程序,正常来说ls是有输出的,可是由于perl的机制,他屏蔽了标准输出。所以运行后我们是什么一看不到的。

解决办法:把标准输出重定向到标准错误上。
#!/usr/bin/perl -w
`ls 1>&2`;
目录 第一章简介 问题与答案 这本书适合你吗? 为何有这么多的脚注? 关于习题和解答? 习题前标的数字是什么意思? 如果我是Perl讲师? “Perl”这个词表示什么意思? Larry为什么要创造Perl? Larry干吗不用其他语言? Perl算容易,还是算难? Perl怎么会这么流行? 现在的Perl发展得怎么样了? 哪些事情最适合用Perl来做? 哪些事情不适合用Perl来做? 如何取得Perl? CPAN是什么? 如何得到Perl的技术支持? 还有别的技术支持方式吗? 如果发现Perl有bug,我该怎么办? 我该怎么编写Perl程序? 一个简单的程序 程序里写的是什么? 我该如何编译Perl程序? 走马观花 习题 第二章标量数据 数字 所有数字的内部格式都相同 浮点数直接量 整数直接量 非+进制整数的直接量 数字操作符 字符串 单引号内的字符串直接量 双引号内的字符串直接量 字符串操作符 数字与字符串之间的自动转换 Perl的内置警告信息 标量变量 给变量取个好名字 标量的赋值 双目赋值操作符 用print输出结果 字符串中的标量变量内插 借助代码点创建字符 操作符的优先级与结合性 比较操作符 if控制结构 布尔值 获取用户输入 chomp操作符 while控制结构 undef值 defined函数 习题 第三章列表与数组 访问数组中的元素 特殊的数组索引 列表直接量 qw简写 列表的赋值 pop和push操作符 shift和unshift操作符 splice操作符 字符串中的数组内插 foreach控制结构 Perl最喜欢用的默认变量:$_ reverse操作符 sort操作符 each操作符 标量上下文与列表上下文 在标量上下文中使用产生列表的表达式 在列表上下文中使用产生标量的表达式 强制指定标量上下文 列表上下文中的 习题 第四章子程序 定义子程序 调用子程序 返回值 参数 子程序中的私有变量 变长参数列表 改进的&max子程序 空参数列表 关于词法(my)变量 use strict编译指令 return操作符 省略与号 非标量返回值 持久化私有变量 习题 第五章输入与输出 读取标准输入 来自钻石操作符的输入 调用参数 输出到标准输出 JNprintf格式化输出 数组和printf 文件句柄 打开文件句柄 以二进制方式读写文件句柄 有问题的文件句柄 关闭文件句柄 用die处理致命错误 用warn输出警告信息 自动检测致命错误 使用文件句柄 改变默认的文件输出句柄 重新打开标准文件句柄 用say来输出 …… 第六章哈希 第七章漫游正则表达式王国 第八章用正则表达式进行匹配 第九章用正则表达式处理文本 第十章其他控制结构 第十一章Perl模块 第十二章文件测试 第十三章目录操作 第十四章字符串与排序 第十五章智能匹配与given—when结构 第十六章进程管理 第十七章高级Perl技巧 附录

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧