Microsoft
Software
Hardware
Network
Frage : Perl unterdrücken Drucken, wenn es zum Rohr ausgegeben wird
Ich habe ein Perl-Programm geschrieben, um das Resultat zum Standardausgang (STDOUT), es auszudrucken bin Entdeckung, wenn es alleine, aber läuft, wenn ich den Ausgang von diesem Perl-Programm zu einem anderen Programm im OS-Niveau „Perl myprogram.pl leite | Grep-ABC“ etwas Ähnliches, der Ausgang des Perl-Programms scheint, an beide STDOUT sowie zum PIPE.
Actually durch zu gelangen meinem Perl-Programm ist so einfach wie unten: -
! #/usr/bin/perl
lineNo = 0;
$fileName = $ARGV [0];
open (MYINPUTFILE,“ - „);
while (
)
{
# gute Praxis, $ _ Wert because
# folgende Betriebe kann mein it.
ändern ($line) = $_;
# gute Praxis, das trailing
# Neuzeile vom line.
chomp ($line) immer abzustreifen;
$lineNo++;
## Feld sequence
# log_name, Linie, $1 client_address, $2 rfc1413, user_name $3, local_time $4, Methode $5, URL $6, Protokoll $7, status_code $8, $9 bytes_sent, referrer $10, Mittel $11, $12 canon_name
wenn (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \“ ([^] +) (. +) (\ w+ \/[^ \ „] +) \“ ([^] +) ([^] +) \ „(. *) \“ \ „(. *) \“ \ „(. *) \“ *$/) {
$bytes_sent = ($9== " - „)? 0: $9;
Druck $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 ";
} sonst {
wenn (/^ ([^] +) ([^] +) ([^] +) \ [([^] + [^ \]] +) \] \ „([^] +) (. +) \“ ([^] +) ([^] +) \ „(. *) \“ \ „(. *) \“ \ „(. *) \“ *$/) {
$bytes_sent = ($8== " - „)? 0: $9;
Druck $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 ";
} sonst {
Druck STDERR „\ tline $lineNo nicht Gleiches: $line“;
}
}
}
Which las es innen Apache kombiniertes Maschinenbordbuch von STDIN und Vorsprung den Ausgang zu STDOUT und drucke ab unsere Linien enthalte Störungen zu STDERR.
What kann grenze ich zwecks unterdrücke den Ausgang zu STDOUT, wenn ich den Ausgang zu einem anderen Programm über OS-Niveau leite?
BTW, die Störung tut auch nicht scheint, an STDERR zu gelangen wenn i-„Perl myprogram.pl | Grep-ABC 2> abc.err“, alle Störung geht auch zu STDOUT anstelle von STDERR und folglich ist das abc.err empty.
Antwort : Perl unterdrücken Drucken, wenn es zum Rohr ausgegeben wird
Da STDOUT zum Rohr geschickt wird, das erwartet würde.
STDERR normaly nur goed zum Anschluss.
zu sich IHR ourput zu abc.err verfangen, das Sie benötigen:
---8perl<---> myprogram.pl 2>abc.err | Grep-ABC
---8Otherwise<---> das stderr vom Grep wird zu abc.err geschickt, um sich das stderr in einer Akte auch zu verfangen, die Sie eine andere Akte benutzen und das später vermischen MÜSSEN.
Weitere Lösungen
Wort-Presse, die Frage bewirtet
asp.net: Mein Problem ist, benutze ich einen ajax Ergänzung Kalender, um BeginDate u. EndDate Werte einzutragen
Silverlight 4 UI Ereignisse
wie kann ich irgendeine Bildentschließung online ändern und sie zum lokalen PC dann innen sparen??
ZFS Sicherungshilfe Ubuntu 10.0.4 LTS
Form-Frage für Kristallreports
Betreffend INOTES in Lotos 8.5
Mühen, die ZWISCHEN Logik erhalten zu arbeiten
Spannungs-Sensor ermittelte einen Ausfall auf Bediener DELL-PowerEdge 2650
broadcom NIC teaming