Cuestión : el Perl suprime la impresión cuando está hecho salir a la pipa

He escrito un programa del Perl para imprimir el resultado a la salida estándar (STDOUT), él soy hallazgo al funcionar solamente, pero cuando instalo tubos la salida de este programa del Perl a otro programa en Perl myprogram.pl del nivel del OS “ | el ABC del grep” algo similar, el resultado del programa del Perl parece conseguir a través a ambos STDOUT así como al mi programa del Perl de PIPE.

Actually es tan simple como abajo: ¡-
! #/usr/bin/perl

lineNo = 0;
$fileName = $ARGV [0];

open (MYINPUTFILE,” - “);
del
while () {el
# buena práctica de almacenar el because
# las operaciones subsecuentes puede cambiar it.
mi ($line) = $_;

# buena práctica de pelar siempre el trailing
# newline del chomp de line.
($line);

 $lineNo++;log_name del sequence
# del campo del

##, línea, $1 client_address, $2 rfc1413, user_name $3, local_time $4, método $5, URL $6, protocolo $7, status_code $8, $9 bytes_sent, referrer $10, agente $11, $12 canon_name

si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \” ([^] +) (. +) \/[(\ w+ ^ \ “] +) \” ([^] +) ([^] +) \ “(. *) \” \ “(. *) \” \ “(. ¿*) \” *$/) {
$bytes_sent = ($9== " - “)? 0: $9; impresión $fileName,” \ t " del
, $lineNo, “\ t$1 \ t$2 \ t$3 \ t$4 \ t$5 \ t$6 \ t$7 \ t$8 \ t”, $bytes_sent,” \ t$10 \ t$11 \ t$12 \ n ";
} {
si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ “([^] +) (. +) \” ([^] +) ([^] +) \ “(. *) \” \ “(. *) \” \ “(. ¿*) \” *$/) {
$bytes_sent = ($8== " - “)? 0: $9; impresión $fileName,” \ t " del
, $lineNo, “\ t$1 \ t$2 \ t$3 \ t$4 \ t$5 \ t$6 \ t \ t$7 \ t”, $bytes_sent,” \ t$9 \ t$10 \ t$11 \ n ";
} {impresión STDERR del
“\ fósforo del tline $lineNo no: $line”; ¿el

Which del
del
del
}}} leyó adentro el registro combinado apache de STDIN y lengüeta delimito la salida a STDOUT e imprimo nuestras líneas contengo errores a STDERR.

What puedo para suprimo la salida a STDOUT cuando instalo tubos la salida a otro programa sobre nivel del OS? el

BTW, el error también no hace parece conseguir a STDERR cuando Perl myprogram.pl de I “ | el ABC 2> abc.err del grep”, todo el error también va a STDOUT en vez de STDERR y el abc.err es así empty.
class= del

Respuesta : el Perl suprime la impresión cuando está hecho salir a la pipa

Pues STDOUT se envía a la pipa que sería esperada.
STDERR goed normaly solamente al terminal.


para coger SU ourput a abc.err que usted necesita:
---8perl<---> myprogram.pl 2>abc.err | ABC del grep
---8Otherwise<---> el stderr del grep se envía a abc.err para coger el stderr también en un archivo que usted NECESITA utilizar un diverso archivo y combinar eso más adelante.
Otras soluciones  
 
programming4us programming4us