Ik heb een perlprogramma geschreven om het resultaat aan standaardoutput (STDOUT) uit te printen, is het vondst wanneer alleen het lopen, maar wanneer ik de output van dit perlprogramma aan een ander programma in OS niveau „perl myprogram.pl door buizen leid | grep abc“ iets in die aard, de output van het perlprogramma schijnt om zowel STDOUT evenals aan PIPE.
Actually te bereiken mijn perlprogramma zoals hieronder zo eenvoudig is: - ! #/usr/bin/perl
lineNo = 0; $fileName = $ARGV [0];
open (MYINPUTFILE,“ - „); while () { # Goede praktijk om $ _ op te slaan koers because # verdere verrichtingen kan mijn it. veranderen ($line) = $_;
# Goede praktijk van trailing # newline van line. altijd om te ontdoen chomp ($line);
$lineNo++;
## Gebied sequence # log_name, lijn, $1 client_address, $2 rfc1413, user_name $3, local_time $4, methode $5, url $6, protocol $7, status_code $8, referrer bytes_sent $9, $10, agent $11, $12 canon_name
als (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \“ ([^] +) (. +) (\ 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 "; } anders { als (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ „([^] +) (. +) \“ ([^] +) ([^] +) \ „(. *) \“ \ „(. *) \“ \ „(. *) \“ *$/) { $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 "; } anders { de gelijke van drukSTDERR „\ tline $lineNo niet: $line“; } } }
Which het in apache gecombineerd logboek van STDIN las en bakent drukt het lusje de output aan af STDOUT en onze lijnen bevat fouten aan STDERR.
What kan ik om onderdrukt de output aan STDOUT wanneer ik de output aan een ander programma over OS niveau door buizen leid?
BTW, de fout niet ook schijnt om aan STDERR te krijgen wanneer I „perl myprogram.pl | grep abc 2> abc.err“, al fout gaat ook naar STDOUT in plaats van STDERR en zo is abc.err empty.
|