Fråga : perl dämpar printing, när det tillverkas för att leda i rör

Jag har skriftligt ett perl-program som ut skrivar ut resultatet till tillverkat standart (STDOUT), det är fyndet när rinnande ensamt, men, när jag leda i rör som tillverkas från detta perl-program till ett annat program i jämn ”perl myprogram.pl för OS | grepabc” något den något liknande, som tillverkas av perl-programet, verkar för att få igenom till båda STDOUT as well as till det mitt perl-programet för PIPE.

Actually är så enkel som nedanför: -
! #/usr/bin/perl

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

open (MYINPUTFILE,” - ”);
för
while () {
nr. godan övar för att lagra $-_ värderar because
nr. följande funktioner kan ändra min it.
($line) = $_;

nr. godan övar alltid för att riva av trailing nr. newlinen från segrare för line.
($line);

 $lineNo++;

## sätter in log_name för sequence
#, fodrar, $1 client_address, $2 rfc1413, user_name $3, local_time $4, metod $5, url $6, protokoll $7, status_code $8, bytes_sent $9, referrer $10, medel $11, $12 canon_name

om (/^ ([^] +) ([^] +) ([^] +), \ [([^] + [^ \]] +) \] \” ([^] +) (. +) (\ w+ \/[^ \ ”] +) \” ([^] +) ([^] +) \ ”(. *) \” \ ”(. *) \” \ ”(. *) \” *$/) {
$bytes_sent = ($9== " - ”)? 0: $9; tryck $fileName,” \ t " för
, $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 ";
} annars {
om (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ ”([^] +) (. +) \” ([^] +) ([^] +) \ ”(. *) \” \ ”(. *) \” \ ”(. *) \” *$/) {
$bytes_sent = ($8== " - ”)? 0: $9; tryck $fileName,” \ t " för
, $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 ";
} annars {trycket STDERR för
”\ matchen för tline $lineNo inte: $line”;

Which för
för
för
}}} som den läste in kombinerade apache, loggar från STDIN, och fliken avgränsar som tillverkas till STDOUT och, skrivar ut vårt fodrar innehåller fel till STDERR.

What kan jag för att dämpar som tillverkas till STDOUT, när jag leda i rör som tillverkas till ett annat program på jämnt OS?

BTW, felet gör också inte verkar för att få till STDERR när I-”perl myprogram.pl | grepabc 2> abc.err”, allt fel går också till STDOUT i stället för STDERR, och thus abc.erren är empty.
" klar "

Svar : perl dämpar printing, när det tillverkas för att leda i rör

Som STDOUT överförs till leda i rör, som skulle, förväntas.
STDERR normaly endast goed till det slutligt.


att för att fånga DIN ourput till abc.err som du behöver:
---8perl<---> myprogram.pl 2>abc.err | grepabc
---8Otherwise<---> stderren från grep överförs till abc.err för att fånga stderren också i en spara som du BEHÖVER att använda ett olikt sparar och sammanfogning, som mer sistnämnd.
Andra lösningar  
 
programming4us programming4us