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