大佬教程收集整理的这篇文章主要介绍了Perl的$|的范围是什么? (OUTPUT_AUTOFLUSH)设置?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我从命令提示符运行此脚本时,尽管有$| = 1;在脚本顶部的语句(在全局范围内),它似乎仍然缓冲输出到控制台(通过ssh会话).
写入日志文件和STDOUT都由函数执行,例如:
#!/usr/bin/perl $| = 1; &writelog("Started..."); # Do work with lots of writelog'ing &writelog("...Done."); exit(0); sub writelog { # This is greatly simplified for the purpose of this question my ($logentry) = @_; my $logfile = "/var/log/tHelog.log"; my $logline = "$logentry\n"; print $logline; open (LOGFILE,">>$logfile"); print LOGFILE,"$logline"; close (LOGFILE); }
是否为$|的值只影响当前范围内的输出,即在这种情况下脚本的全局范围?或者,在上面的示例中,是否应该通过writelog中的print语句立即刷新STDOUT / LOGFILE?
perlvar
,$|具有全局范围,它仅适用于当前选定的输出通道.这是任何程序开头的STDOUT,但可以通过1-arg SELEct调用进行更改.
$| = 1; # set autoflush on STDOUT open LOGFILE,'>log'; my $fh = SELEct LOGFILE; # change "SELEcted output chAnnel" $| = 1; # set autoflush on LOGFILE SELEct $fh; # restore STDOUT as "SELEcted output chAnnel" $| = 0; # turnoff autoflush on STDOUT
以上是大佬教程为你收集整理的Perl的$|的范围是什么? (OUTPUT_AUTOFLUSH)设置?全部内容,希望文章能够帮你解决Perl的$|的范围是什么? (OUTPUT_AUTOFLUSH)设置?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。