Ho scritto un programma del Perl per stampare fuori il risultato ad uscita standard (STDOUT), esso sono ritrovamento quando funziona da solo, ma quando convoglio l'uscita da questo programma del Perl ad un altro programma Perl myprogram.pl nel livello di OS “ | il ABC di grep„ qualcosa di simile, l'uscita del programma del Perl sembra ottenere attraverso ad entrambi gli STDOUT così come al mio programma del Perl di PIPE.
Actually è semplice quanto qui sotto: - ! #/usr/bin/perl
lineNo = 0; $fileName = $ARGV [0];
open (MYINPUTFILE,„ - “); del while () { # buona pratica memorizzare il because # funzionamenti successivi può cambiare it. mio ($line) = $_;
# buona pratica mettere a nudo sempre il trailing # nuova linea dal chomp di line. ($line);
$lineNo++;log_name del sequence # del campo del
##, linea, $1 client_address, $2 rfc1413, user_name $3, local_time $4, metodo $5, URL $6, protocollo $7, status_code $8, $9 bytes_sent, referrer $10, agente $11, $12 canon_name
se (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \„ ([^] +) (. +) \/[(\ w+ ^ \ “] +) \„ ([^] +) ([^] +) \ “(. *) \„ \ “(. *) \„ \ “(. *) \„ *$/) { $bytes_sent = ($9== " - “)? 0: $9; stampa $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 "; } altrimenti { se (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ “([^] +) (. +) \„ ([^] +) ([^] +) \ “(. *) \„ \ “(. *) \„ \ “(. *) \„ *$/) { $bytes_sent = ($8== " - “)? 0: $9; stampa $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 "; } altrimenti {stampa STDERR del “\ fiammifero di tline $lineNo non: $line„;
Which del del del }}} ha letto dentro il ceppo unito apache da STDIN e linguetta delimito l'uscita a STDOUT e stampo le nostre linee contengo gli errori a STDERR.
What posso per sopprimo l'uscita a STDOUT quando convoglio l'uscita ad un altro programma al livello di OS? il
BTW, l'errore inoltre non fa sembra ottenere a STDERR quando Perl myprogram.pl di I “ | il ABC 2> abc.err di grep„, tutto l'errore inoltre va a STDOUT anziché STDERR e il abc.err è così empty.
class= del
|