LINUX.ORG.RU

Perl: Проблема при получении вывода STDERR (+)


0

0

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

anonymous

Проблема решилась.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.