我想关闭 STDOUT 以防止我的代码输出我需要进一步计算但不想要在我的网页上的特定图像。
所以我想关闭 STDOUT,对我的代码做我必须做的事情,然后重新打开 STDOUT 以将内容输出到网页。 (不是文件)
我试过的是:
close STDOUT;
# my code here
open STDOUT;
这不起作用...
谢谢
最佳答案
有几种方法可以解决您的问题,其中许多方法不需要您关闭 STDOUT 并冒着使您的程序的标准 I/O channel 变得困惑的风险。
例如,您可以使用 (1-arg) select
命令直接输出 print
临时命令其他地方。
print $stuff_you_want_to_send_to_STDOUT;
select(NOT_STDOUT);
# now default print sends things to NOT_STDOUT.
# This doesn't need to be a real filehandle, though you may get warning
# messages if it is not.
...;
print $the_image_you_dont_want_to_go_to_STDOUT;
...;
select(STDOUT);
# now print sends things to STDOUT agin
print $more_stuff_you_do_want_to_go_to_STDOUT;
您还可以重新分配
*STDOUT
glob 在运行时不关闭任何句柄。 *OLD_STDOUT = *STDOUT;
print $for_STDOUT;
*STDOUT = *NOT_STDOUT; # again, doesn't need to be a real filehandle
print $stuff_to_suppress;
*STDOUT = *OLD_STDOUT; # restore original STDOUT
print $more_stuff_for_STDOUT;
关于perl - 如何在 Perl 中关闭和重新打开 STDOUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417185/