print
いくつかのスクリプトで混乱を減らす方法を探しています。一部の出力をファイルに、一部を画面に、一部を両方に出力したいと考えています。私を逃れているのは「両方へのいくつか」です。STDOUT と既に編集されているファイルの両方に行くFILEHANDLEを開く方法はあります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
です.1つはSTDOUTに行き、もう1つはSTDOUTに行きます。また、デバッグレベルに基づいて、おそらくデバッグselect
レベルによって制御されるステートメントを使用して、より動的にすることもできます。
したがって、上記を書いている間、私は自分のニーズに合った解決策を思いつきましたが、私の欲求には合いませんでした. :)それで、別のエレガントなソリューションを実装しながら、この質問を投稿します。
私はこれをやった....それは通常のほど素晴らしいものではありませんが、print
後でより堅牢にすることができます....
sub printit {
my ($opt, $text) = @_;
if ($opt == $FILE || $opt == $BOTH) {print $LOG $text}
if ($opt == $TERM || $opt == $BOTH) {print $text}
}