如果在主脚本中重定向,我如何在perl模块中打印到STDOUT

我在Perl脚本中重定向了STDOUT.我在模块中打印的所有内容都被重定向到文件.有没有办法在Perl模块中恢复STDOUT?

这是我的例子

require my_module;

open(STDOUT, ">$outlog") || die "Error stdout: $!";
open(STDERR, ">>$outlog") || die "Error stderr: $!";

my_module::my_func();

所以我想在my_module :: my_func()函数中的STDOUT上打印一条消息并退出.

最佳答案 实际上,除非将其保存在其他位置,否则无法恢复STDOUT.

你可以这样做:

        # Save current STDOUT handle in OLDOUT
        open (OLDOUT, ">&STDOUT") or die "Can't open OLDOUT: $!";   

        # Set STDOUT to a your output file
        open (STDOUT, ">$youroutputfile") or die "Can't open STDOUT: $!";

        # Do whatever you want to do here.......
        # ...........

        # Close STDOUT output stream
        close (STDOUT);

        # Reset STDOUT stream to previous state
        open (STDOUT, ">&OLDOUT") or die "Can't open STDOUT: $!";

        # Close OLDOUT handle
        close (OLDOUT);

        # Here your preview STDOUT is restored....

🙂

点赞