creating021 escribiste:Hola, gracias por la pronta respuesta.
Las soluciones que comentas no me funcionan por lo siguiente:
Al ejecutar el comando con 2>&1 manda el error a STDOUT y yo quiero meterlo en un array.
El módulo que comentas es para los errores que hay dentro del script... no captura los errores de una ejecución (lo hacer por $SIG{__WARN__}).
Lo que quiero es tomar perror de sdio.h (STDERR)
Qué tal,
Mira si sólo quieres ejecutar un proceso del sistema, entonces esa solución funciona:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict
;
use warnings
;
open my $proc, '-|', 'rm -i * 2>&1' or die $!;
chomp (my @stderr = <$proc>);
close $proc;
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Si el proceso no es del sistema (por ejemplo código en Perl que quieres correr en ese mismo programa), entonces si necesitas hacer un fork, y controlar tu los conductos de salida y error.. Una solución aparte de Open::IPC3 y el uso de popen(), sería el uso de POE::Pipe::TwoWay (funciona sin POE).
Prácticamente la solución consiste en mandar el STDERR como la salida de un proceso, a la entrada del otro.
Saludos