Как перенаправить вывод консоли в текстовый файл

Я выполняю программу на Perl. Что бы ни печаталось на моей консоли, я хочу перенаправить это в текстовый файл.

Ответы на вопрос(4)

через командную строку, например.

perl -w my_program.pl > my_output.txt

Если вы хотите также включить вывод stderr, то вы можете сделать это (при условии, что ваша оболочка bash):

perl -w my_program.pl &> my_output.txt

чтобы захватить все, что поступает на ваш терминал, вы хотите перенаправить как стандартный вывод, так и стандартную ошибку.

С bash команда похожа на

$ ./my-perl-program arg1 arg2 argn > output.txt 2>&1

Оболочка С,csh производные, такие какtcsh и более новые версии bash понимают

$ ./my-perl-program arg1 arg2 argn >& output.txt

означать то же самое.

Синтаксис командной оболочки в Windows похож на синтаксис Bourne.

C:\> my-perl-program.pl args 1> output.txt 2>&1

Чтобы настроить это перенаправление в своем коде Perl, добавьте

open STDOUT, ">", "output.txt" or die "$0: open: $!";
open STDERR, ">&STDOUT"        or die "$0: dup: $!";

к началу исполняемых операторов вашей программы.

чтобы ваш вывод печатался на консоли, а также в журналах, добавьте эту строку к вашему коду (например, перед любыми инструкциями печати)

open (STDOUT, "| tee -ai logs.txt");
print "It Works!";

После последней печати в вашем сценарии

close (STDOUT);

Только для сообщений об ошибках,

open (STDERR, "| tee -ai errorlogs.txt");

В CLI вы можете использовать>, так

perl <args> script_name.pl > path_to_your_file

Если вы хотите сделать это внутри скрипта Perl, добавьте этот код, прежде чем что-либо печатать:

open(FH, '>', 'path_to_your_file') or die "cannot open file";
select FH;
# ...
# ... everything you print should be redirected to your file
# ...
close FH;  # in the end

ВАШ ОТВЕТ НА ВОПРОС