我正在寻找一种方法来减少print
我的一些脚本中的一些混乱。我想要一些输出到文件,一些到屏幕,还有一些到两者。是“两者兼得”让我望而却步。有没有办法打开一个FILEHANDLE将同时转到 STDOUT 和一个已经open
编辑的文件?
像这样的东西:
open ($file_only, ">", "$logfile");
open ($file_and_term, .....);
print $file_and_term "Nice stuff for the user to see\n";
print $file "$some_command\n";
print $file `$some_command`;
$debug && print $file "some debug info goes here, too\n";
print "Hey, good job! You're done!\n"
我的目标是发送到的行$file_and_term
不会是双行,一个去$file
,一个去 STDOUT。并且还为了使其更加动态,基于调试级别,也许使用select
由调试级别控制的语句。
因此,在编写上述内容时,我确实想出了一个适合我需要但不符合我愿望的解决方案。:) 所以我会在实施我不同的优雅解决方案时发布这个问题。
我最终这样做了print
......
sub printit {
my ($opt, $text) = @_;
if ($opt == $FILE || $opt == $BOTH) {print $LOG $text}
if ($opt == $TERM || $opt == $BOTH) {print $text}
}