【发布时间】:2017-09-13 19:48:29
【问题描述】:
我们的系统使用的常用函数脚本使用简单的 STDERR 重定向来创建用户特定的错误日志。是这样的
# re-route standard out to text file
close STDERR;
open STDERR, '>>', 'd:/output/Logs/STDERR_' . &parseUsername($ENV{REMOTE_USER}) . '.txt'
or die "couldn't redirect STDERR: $!";
现在,我将它复制粘贴到我自己的函数脚本中,以获取系统特定的错误日志,虽然它会编译,但它会破坏需要它的脚本。奇怪的是,它甚至不打印子脚本抛出的错误。我的稍微修改的版本看起来像,
close STDERR;
open (STDERR, '>>', 'err/STDERR_SPORK.txt')
or die print "couldn't redirect STDERR: $!";
在命令提示符下一切都编译得很好,-c 返回 ok,如果我在函数脚本中抛出警告并编译,它会正确输出。我仍然不明白为什么这会杀死孩子们。我切断了重定向,果然它们起作用了。有什么想法吗?
【问题讨论】:
-
or die print ...???? -
@ikegami 我遇到了一个问题,它在打开时失败了,它不会说明原因。添加 print 至少让我知道为什么 open 失败了。原因已得到解决。
标签: perl file-handling stderr