Я ищу способ уменьшить некоторые помехи в некоторых моих сценариях. Я хочу, чтобы какой-то вывод отправлялся в файл, некоторые - на экран, а некоторые - на оба. Это «кое-что для обоих», которое ускользает от меня. Есть ли способ открыть FILEHANDLE, который пойдет как в STDOUT, так и в файл, который уже есть open
ed?перенаправление печати на несколько выходных целей
Что-то вроде этого:
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}
}
http://stackoverflow.com/questions/10519779/perl-redirect-stdout-to-two-files –
у меня есть Perl 5.8.8. У меня нет IO :: Tee, File :: Tee или PerlIO: Util. Кроме того, мой скрипт должен работать как на платформах Unix, так и на Windows. –