在perl中将eval的STDERR重定向到/dev/null

在perl中将eval的STDERR重定向到/dev/null,perl,eval,Perl,Eval,运行上述程序时,如果$testRequirePath文件中存在语法错误,则会将其打印到STDOUT。我想将它重定向到/dev/null。我该怎么做呢?你看到的是警告,而不是错误;错误将被eval捕获并放入$@。要同时抑制警告,只需执行以下操作: eval {require $testRequirePath}; 不,它不会将语法错误打印到标准输出或其他任何地方。请显示您实际得到的输出。@ysth:这是我在屏幕上得到的输出。Bareword在Group2.pm第117行,靠近“sendCmd”(s

运行上述程序时,如果
$testRequirePath
文件中存在语法错误,则会将其打印到STDOUT。我想将它重定向到
/dev/null
。我该怎么做呢?

你看到的是警告,而不是错误;错误将被eval捕获并放入$@。要同时抑制警告,只需执行以下操作:

eval {require $testRequirePath};

不,它不会将语法错误打印到标准输出或其他任何地方。请显示您实际得到的输出。@ysth:这是我在屏幕上得到的输出。Bareword在Group2.pm第117行,靠近“sendCmd”(sendCmd之前缺少运算符?)的位置找到运算符,
eval块
隐藏所有错误。如果您看到错误消息,那么这是因为调用代码选择声明失败。请出示您的完整代码。看起来您在
Group2.pm中确实遇到了问题。如果您需要帮助,请在第117行周围显示大约20行。@Borodin:缺少分号。我这样做是为了制造这个问题。因为我不想在添加新组时在标准输出上打印这样的错误。
eval { local $SIG{__WARN__} = sub {}; require $testRequirePath }