• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Perl中有一些预定义的文件句柄。如标准输入STDIN、标准输出STDOUT、和标准错误STDERR。标准错误STDERR是一个额外的输出路径。怎样理解这句话呢?先来看个例子。

% perl -e 'print "Hello, World!\nabc"; print STDERR "Hi\n";'

输出:

Hello, World!
Hi
abc

而不是:

Hello, World!
abc
Hi

这是因为perl print函数是行缓冲。当碰到\n,print就立即把“标准输出”打印出来。而后面的abc因为没有碰到换行,所以先存在缓冲区,等到缓冲区满了再打印。错误输出是没有缓冲的,所以就立即打印出来了。

% perl -e 'print "Hello, World!\nabc"; print STDERR "Hi\n";' >err.txt

输出到err.txt:

Hello, World!
abc

而err.txt中没有包含Hi(Hi 仍然输出到屏幕),这只不过是把标准输出导入到了文件。如果要导入标准错误你必须这样:  

% perl   -e 'print "Hello, World!\nabc"; print STDERR "Hi\n";'   >&err.txt

>& 只用在unix和Linux下的标准错误重定向。windows下是   2>

一般而言,print 只是等同于 print STDOUT 标准输出。当在输出到文件时,我们就可以通过用标准错误STDERR把错误输出的屏幕上。这样子,perl一边在工作(STDOUT 标准输出到文件时),也能即时看到错误(标准错误STDERR)。(注:以前我一直想这样实现,今天才明白过来。)

如:

% perl -e 'print STDOUT "Hello, World!\n"; print STDERR "Error\n";' >err.txt

#######

总结就是含有STDOUT和没有 都一样,都是标准输出,都可以输出到屏幕上,也可以重定向到文档里

STDERR就是标准错误输出,可以输出到屏幕上,也可以重定向到文档里,只不过是要加&,

 

 

 

1>outfile 2>&1   就是标准输出,错误输出都写入outfile。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl正则表达式引用发布时间:2022-07-22
下一篇:
Perl资料发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap