Question : le Perl suppriment l'impression une fois produit dans la pipe

J'ai écrit un programme de Perl pour imprimer le résultat au rendement standard (STDOUT), il est trouvaille seul en courant, mais quand je siffle le rendement de ce programme de Perl à un autre programme Perl myprogram.pl dans d'OS niveau «  | l'ABC de grep » n'importe quoi de pareil, le rendement du programme de Perl semble obtenir à travers aux deux STDOUT aussi bien qu'au mon programme de Perl de PIPE.

Actually est aussi simple que ci-dessous : -
! #/usr/bin/perl

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

open (MYINPUTFILE, » - « ) ;
du
while () {le
# bonne pratique de stocker le because
# des opérations suivantes peut changer it.
mon ($line) = $_ ;

# bonne pratique de dépouiller toujours le trailing
# caractère NL du chomp de line.
($line) ;

 $lineNo++;log_name du sequence
# de champ du

##, ligne, $1 client_address, $2 rfc1413, user_name $3, local_time $4, méthode $5, URL $6, protocole $7, status_code $8, $9 bytes_sent, referrer $10, agent $11, $12 canon_name

si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ » ([^] +) (. +) \ (\ w+/[^ \ « ] +) \ » ([^] +) ([^] +) \ « (. *) \ » \ « (. *) \ » \ « (. *) \ » *$/) {
$bytes_sent = ($9== " - « ) ? 0 : $9 ; copie $fileName, » \ t " du
, $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 " ;
} autrement {
si (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ « ([^] +) (. +) \ » ([^] +) ([^] +) \ « (. *) \ » \ « (. *) \ » \ « (. *) \ » *$/) {
$bytes_sent = ($8== " - « ) ? 0 : $9 ; copie $fileName, » \ t " du
, $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 " ;
} autrement {copie STDERR de
« \ allumette de tline $lineNo pas : $line » ; le

Which du
du
du
}}} il a lu dedans la notation combinée par apache de STDIN et est-ce qu'étiquette le rendement à STDOUT et nos lignes des erreurs à STDERR.

What je délimite imprime contiens peux supprime le rendement à STDOUT quand je siffle le rendement à un autre programme au niveau d'OS ? le

BTW, l'erreur ne fait pas également semble obtenir à STDERR quand Perl myprogram.pl d'I «  | ABC 2> abc.err de grep », toute l'erreur va également à STDOUT au lieu de STDERR et l'abc.err est ainsi empty.
class= de

Réponse : le Perl suppriment l'impression une fois produit dans la pipe

Car STDOUT est envoyé dans la pipe qui serait prévue.
STDERR normaly seulement goed à la borne.


pour attraper VOTRE ourput à abc.err que vous avez besoin :
---8perl<---> myprogram.pl 2>abc.err | ABC de grep
---8Otherwise<---> le stderr du grep est envoyé à abc.err pour attraper le stderr également dans un dossier que vous DEVEZ employer un dossier différent et fusionner cela plus tard.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us