J'ai écrit un programme de Perl pour imprimer le résultat au rendement standard (STDOUT), il est trouvaille seul en courant, mais quand je siffle le rendement de ce programme de Perl à un autre programme Perl myprogram.pl dans d'OS niveau « | l'ABC de grep » n'importe quoi de pareil, le rendement du programme de Perl semble obtenir à travers aux deux STDOUT aussi bien qu'au mon programme de Perl de PIPE.
Actually est aussi simple que ci-dessous : - ! #/usr/bin/perl
lineNo = 0 ; $fileName = $ARGV [0] ;
open (MYINPUTFILE, » - « ) ; du while () {le # bonne pratique de stocker le because # des opérations suivantes peut changer it. mon ($line) = $_ ;
# bonne pratique de dépouiller toujours le trailing # caractère NL du chomp de line. ($line) ;
$lineNo++;log_name du sequence # de champ du
##, ligne, $1 client_address, $2 rfc1413, user_name $3, local_time $4, méthode $5, URL $6, protocole $7, status_code $8, $9 bytes_sent, referrer $10, agent $11, $12 canon_name
si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ » ([^] +) (. +) \ (\ w+/[^ \ « ] +) \ » ([^] +) ([^] +) \ « (. *) \ » \ « (. *) \ » \ « (. *) \ » *$/) { $bytes_sent = ($9== " - « ) ? 0 : $9 ; copie $fileName, » \ t " du , $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 " ; } autrement { si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ « ([^] +) (. +) \ » ([^] +) ([^] +) \ « (. *) \ » \ « (. *) \ » \ « (. *) \ » *$/) { $bytes_sent = ($8== " - « ) ? 0 : $9 ; copie $fileName, » \ t " du , $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 " ; } autrement {copie STDERR de « \ allumette de tline $lineNo pas : $line » ; le
Which du du du }}} il a lu dedans la notation combinée par apache de STDIN et est-ce qu'étiquette le rendement à STDOUT et nos lignes des erreurs à STDERR.
What je délimite imprime contiens peux supprime le rendement à STDOUT quand je siffle le rendement à un autre programme au niveau d'OS ? le
BTW, l'erreur ne fait pas également semble obtenir à STDERR quand Perl myprogram.pl d'I « | ABC 2> abc.err de grep », toute l'erreur va également à STDOUT au lieu de STDERR et l'abc.err est ainsi empty.
class= de
|