STDOUT redirigido a la variable que no atrapa la salida de la tubería
Quiero redirigir temporalmente stdout a una variable en memoria. Las impresiones se redirigen correctamente a mi variable pero no a la salida de una tubería (bc en mi ejemplo). Que esta pasando?
#!/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";
La salida real será:
before bc
Rendimiento esperado:
before bc
4