gpt4 book ai didi

perl - 设置一个文件句柄以便悄悄地跳过对其的打印?

转载 作者:行者123 更新时间:2023-12-01 10:35:45 25 4
gpt4 key购买 nike

这种奇怪的兴趣来自于不断扩大的需求和没有时间改变设计(重构)。当然,这不是一个好的设计,但我现在需要处理它并希望稍后重构。

有一些早期打开的日志文件会打印到整个代码中。新要求意味着使用(新)命令行选项 (--noflag),这些日志文件之一是无关的。

我现在能做的就是填充定义(打开我的 $fh,...)和它的所有使用(打印 $ fh ...) 和 if $flag。这显然是一个糟糕的设计,而且很容易出错(也不漂亮)。

$fh 与文件关联时,有没有办法对其执行某些操作这样任何后续的 print $fh ... 都会被解释器接受,但会导致根本不运行 print,而不会出现错误? (让我想象一下,例如,$fh = VOID if $flag;。)或者,是否有一些NULL流之类的?我所知道的只有 STDOUT (1)、STDERR (2) 和 STDIN (0)。

我不希望 $fh 打印到其他任何地方,最好甚至不打印到 /dev/null (如果可能的话?)。我确实环顾四周,找不到任何相关的东西。如果信息确实已经存在,我将不胜感激。任何想法都值得赞赏。

PS。这是这里提出的第一个问题(在使用 SO 多年之后),如果它已关闭,请告诉我。


更新

感谢您的回复。他们提示我添加/完善这个问题:是否将打印标记为可能优化的 /dev/null ,以便“打印”实际上不会发生? (虽然我仍然对是否可以设置文件句柄来告诉 Perl“不要在此处打印”感兴趣。)

我试图避免运行 void(打印)语句,而不添加条件。


更新/澄清

从评论中总结一下(谢谢!):这不是对性能优化的追求。我完全同意评论中所说的一切。只是执行毫无意义的语句(通常大约一百万条)让我感到不安。另外,我对 Perl 中一些我没有遇到过的可能的黑暗角落感到好奇。 (大部分问题已在答案/评论中得到解决。)

最佳答案

如果您使用的是 UNIX 操作系统,则可以使用“/dev/null”

open my $fh, '>', '/dev/null' or die 'This should never happen';

Dev null 将默默地接受所有输入。

关于perl - 设置一个文件句柄以便悄悄地跳过对其的打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com