Нужно получить то, что выводит в 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!