加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl:关于标准输出STDOUT和标准错误STDERR z

发布时间:2020-12-16 00:33:14 所属栏目:大数据 来源:网络整理
导读:Perl中有一些预定义的文件句柄。如标准输入STDIN、标准输出STDOUT、和标准错误STDERR。标准错误STDERR是一个额外的输出路径。怎样理解这句话呢?先来看个例子。 % perl -e 'print "Hello,World!nabc"; print STDERR "Hin";' 输出: Hello,World! Hi abc 而

Perl中有一些预定义的文件句柄。如标准输入STDIN、标准输出STDOUT、和标准错误STDERR。标准错误STDERR是一个额外的输出路径。怎样理解这句话呢?先来看个例子。 % perl -e 'print "Hello,World!nabc"; print STDERR "Hin";' 输出: Hello,World! Hi abc 而不是: Hello,World! abc Hi 这是因为perl print函数是行缓冲。当碰到n,print就立即把“标准输出”打印出来。而后面的abc因为没有碰到换行,所以先存在缓冲区,等到缓冲区满了再打印。错误输出是没有缓冲的,所以就立即打印出来了。 % perl -e 'print "Hello,World!nabc"; print STDERR "Hin";' >err.txt 输出到err.txt: Hello,World! abc 而err.txt中没有包含Hi(Hi 仍然输出到屏幕),这只不过是把标准输出导入到了文件。如果要导入标准错误你必须这样: ? % perl ? -e 'print "Hello,World!nabc"; print STDERR "Hin";' ? >&err.txt >& 只用在unix和Linux下的标准错误重定向。windows下是 ? 2> 一般而言,print 只是等同于 print STDOUT 标准输出。当在输出到文件时,我们就可以通过用标准错误STDERR把错误输出的屏幕上。这样子,perl一边在工作(STDOUT 标准输出到文件时),也能即时看到错误(标准错误STDERR)。(注:以前我一直想这样实现,今天才明白过来。) 如: % perl -e 'print STDOUT "Hello,World!n"; print STDERR "Errorn";' >err.txt ####### 总结就是含有STDOUT和没有 都一样,都是标准输出,都可以输出到屏幕上,也可以重定向到文档里 STDERR就是标准错误输出,可以输出到屏幕上,也可以重定向到文档里,只不过是要加&, ? 1>outfile 2>&1 ? 就是标准输出,错误输出都写入outfile。 ?? ?感谢YC柳城和香格里拉

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读