Я писал программу perl для того чтобы напечатать вне результат к стандартному выходу (STDOUT), ему буду находкой самостоятельно, но когда я пущу выход по трубам от этой программы perl к другой программе в perl myprogram.pl уровне OS « | кажется, что получает abc grep» что-нибудь подобное, выход программы perl до конца к обоим STDOUT также, как к программа perl PIPE.
Actually моя как просто как ниже: - ! #/usr/bin/perl
lineNo = 0; $fileName = $ARGV [0];
open (MYINPUTFILE,» - «); while () { # хорошая практика хранить because # затем деятельности может изменить it. мое ($line) = $_;
# хорошая практика всегда обнажать trailing # newline от chomp line. ($line);
$lineNo++;log_name sequence # поля
##, линия, $1 client_address, $2 rfc1413, user_name $3, local_time $4, метод $5, url $6, протокол $7, status_code $8, $9 bytes_sent, referrer $10, вещество $11, $12 canon_name
если (/^ ([^] +) ([^] +) ([^] +), то \ [([^] + [^ \]] +) \] \» ([^] +) (. +) \ (\ w+/[^ \ «] +) \» ([^] +) ([^] +) \ «(. *) \» \ «(. *) \» \ «(. *) \» *$/) { $bytes_sent = ($9== " - «)? 0: $9; печать $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 "; } еще { если (/^, то ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ «([^] +) (. +) \» ([^] +) ([^] +) \ «(. *) \» \ «(. *) \» \ «(. *) \» *$/) { $bytes_sent = ($8== " - «)? 0: $9; печать $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 "; } еще {печать STDERR «\ спичка tline $lineNo не: $line»;
Which }}} оно прочитал внутри журнал совмещенный апашем от STDIN и плата размежевываю выход к STDOUT и печатаю наши линии содержу ошибки к STDERR.
What могу я подавляю выход к STDOUT когда я пускаю выход по трубам к другой программе на уровне OS? кажется, что получает
BTW, ошибка также не делает к STDERR когда perl myprogram.pl I « | abc 2> abc.err grep», вся ошибка также идет к STDOUT вместо STDERR и таким образом abc.err будет empty.
class=
|