0x0009 Redirecting output to file. Перенаправление вывода в файл

Говоря о вариантах вывода информации, необходимо сказать о том, что в большинстве случаев, для программистов гораздо удобнее бывает работать с информацией, выведенной не на экран монитора, а в файл.

Именно по этой причине в таких системах, как UNIX, Linux и подобных уже много лет назад была реализована возможность перенаправления вывода информации в файл, через специальные операторы перенаправления, с указанием имени определённого файла. Интересно, что сам файл может и не существовать, поскольку, будучи указанным в качестве адресата при перенаправлении вывода информации в него, он создаётся автоматически.

В данном примере используется модуль IO::Handle. Подробнее на CPAN.

Что самое приятное – файлы можно использовать раздельно для потока вывода (STDOUT), а ввода (STDIN) и ошибок (STDERR).


open INPUT, '<', "data.in"		or die $!;
open OUTPUT, '>', "work.log"		or die $!;
open ERROR, '>', "error.log"		or die $!;

STDIN->fdopen(\*INPUT, 'r')		or die $!;
STDOUT->fdopen(\*OUTPUT, 'w')		or die $!;
STDERR->fdopen(\*ERROR, 'w')		or die $!;

# Сообщение дописывается в файл work.log
print "Начинаем работу...\n";

# Сообщение дописывается в error.log
warn "Что-то случилось. Завершение работы";

close INPUT;
close OUTPUT;
close ERROR;