Мне нужно получить то, что выводит в STDERR запускаемое через system() приложение.
Делаю так:
local *OLD;
open OLD, \'>&STDERR\';
close(STDERR);
if (!open (STDERR, \'>err.txt\')) { die "Unable to open STDERR"; }
my $c ="perl -e \\" print STDERR \'ERR\';\\"";
my $res = system($c);
open(STDERR,\'>&OLD\');
После выполнения скрипта в файле \'err.txt\' вижу \'ERR\' - т.е. все работает как надо.
Но мне надо этот вывод получить в переменную, делаю так:
local *OLD;
open OLD, \'>&STDERR\';
close(STDERR);
open (STDERR, \'>\', \\$output) || &die_error("Unable to open STDERR");
my $c ="perl -e \\" print STDERR \'ERR\';\\"";
my $res = system($c);
open(STDERR,\'>&OLD\');
print "OUT: ".$output;
После выполнения скрипта вижу: "OUT: ", т.е. STDERR не попал в переменную $output.
Подскажите, в чем проблема?
Thanx!