Eu escrevi um programa do Perl para imprimir para fora o resultado à saída padrão (STDOUT), ele sou achado ao funcionar sozinho, mas quando eu conduzo a saída deste programa do Perl a um outro programa Perl myprogram.pl no nível do ósmio “ | o ABC do grep” qualquer outra coisa semelhante, a saída do programa do Perl parece começ completamente a ambos os STDOUT assim como programa do Perl de PIPE.
Actually a meu é tão simples quanto abaixo: - ! #/usr/bin/perl
lineNo = 0; $fileName = $ARGV [0];
open (MYINPUTFILE,” - “); do while () {o # boa prática armazenar o because # operações subseqüentes pode mudar it. meu ($line) = $_;
# boa prática descascar sempre o trailing # newline do chomp de line. ($line);
$lineNo++;log_name do sequence # do campo do
##, linha, $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
se (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \” ([^] +) (. +) \ (\ w+/[^ \ “] +) \” ([^] +) ([^] +) \ “(. *) \” \ “(. *) \” \ “(. *) \” *$/) { $bytes_sent = ($9== " - “)? 0: $9; cópia $fileName do ,” \ t ", $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 "; } mais { se (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ “([^] +) (. +) \” ([^] +) ([^] +) \ “(. *) \” \ “(. *) \” \ “(. *) \” *$/) { $bytes_sent = ($8== " - “)? 0: $9; cópia $fileName do ,” \ t ", $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 "; } mais {cópia STDERR do “\ fósforo do tline $lineNo não: $line”; o
Which do do do }}} leu dentro o registro combinado apache de STDIN e aba limito a saída a STDOUT e imprimo nossas linhas contenho erros a STDERR.
What posso eu suprimo a saída a STDOUT quando eu conduzo a saída a um outro programa no nível do ósmio? o
BTW, o erro igualmente não fizer parece começ a STDERR quando Perl myprogram.pl de I “ | o ABC 2> abc.err do grep”, todo o erro igualmente vai a STDOUT em vez de STDERR e assim o abc.err é empty.
class= do
|