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 "
|