Pytanie : perl tłumić druk gdy

I pisać perl program myprogram.pl the rezultat standardowy wydajność (STDOUT), ono być znalezisko gdy biegać samotnie, ale gdy I piszczeć the wydajność od ten perl program inny program w OS poziom "perl myprogram.pl | grep abc" lubić lubić lubić, the wydajność the perl program wydawać się oba STDOUT zarówno jak i the PIPE.

Actually mój perl program być równie prosty prosty: -
! #/usr/bin/perl

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

open (MYINPUTFILE," - ");
while ()
{
# Dobra praktyka $ _ wartość because
# natępny operacja móc it.
mój ($line) = $_;

# Dobra praktyka zawsze the trailing
# newline od the line.
chomp ($line);

 $lineNo++;

## Śródpolny sequence
# log_name, linia, $1 client_address, $2 rfc1413, $3 user_name, $4 local_time, $5 metoda, $6 url, $7 protokół, $8 status_code, $9 bytes_sent, $10 referrer, $11 agent, $12 canon_name

jeżeli (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \" ([^] +) (. +) (\ w+ \/[^ \ "] +) \" ([^] +) ([^] +) \ "(. *) \" \ "(. *) \" \ "(. *) \" *$/) {
$bytes_sent = ($9== " - ")? (0): $9;
druk $fileName," \ 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 ";
} inny {
jeżeli (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ "([^] +) (. +) \" ([^] +) ([^] +) \ "(. *) \" \ "(. *) \" \ "(. *) \" *$/) {
$bytes_sent = ($8== " - ")? (0): $9;
druk $fileName," \ 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 ";
} inny {
druk STDERR "\ tline $lineNo zapałczany: $line";
}
}
}

Which ono czytać wewnątrz apasz łączyć bela od STDIN i zakładka rozgraniczać the wydajność STDOUT i drukować nasz linia zawierać błąd STDERR.

What móc I tłumić the wydajność STDOUT gdy I piszczeć the wydajność inny program na OS poziom?

BTW, the błąd także wydawać się STDERR gdy I "perl myprogram.pl | grep abc 2> abc.err", wszystkie błąd także iść STDOUT zamiast STDERR i tak the abc.err być empty.

Odpowiedź : perl tłumić druk gdy

Gdy STDOUT wysyłać the drymba który oczekiwać.
STDERR normaly tylko goed the terminal.


TWÓJ ourput abc.err ty potrzebować:
---8perl<---> myprogram.pl 2>abc.err | grep abc
---8Otherwise<---> the stderr od grep wysyłać abc.err the stderr także w kartoteka ty POTRZEBOWAĆ różny kartoteka i potrzebować opóźniony.
Inne rozwiązania  
 
programming4us programming4us