IPC :: Run

у временно перенаправить стандартный вывод в переменную памяти. Отпечатки корректно перенаправляются в мою переменную, но не выводятся из канала (в моем примере bc). Что происходит?

#!/usr/bin/perl

my $stdout_sink;
open(my $orig_stdout, ">&STDOUT") || die $!;
close STDOUT;
open(STDOUT, ">", \$stdout_sink) || die $!;

# produce some output in different ways
print "before bc\n"; # ok
open my $fh, "| bc";
print $fh "2+2\n";   # not ok
close $fh;

close STDOUT;  
open(STDOUT, ">&", $orig_stdout) || die $!;
print "$stdout_sink";

Фактический результат будет:

before bc

Ожидаемый, d вывод:

before bc
4

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

Ваш ответ на вопрос