View previous topic :: View next topic |
Author |
Message |
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Wed Feb 25, 2009 9:01 pm Post subject: [Perl] Pipe lesen |
|
|
Hallo zusammen,
ich möchte mit Perl Daten aus einer Pipe lesen, was ich folgendermaßen mache:
(Reader ist die Stdout-Pipe des Prozesses).
Das klappt auch für komplette Zeilen ganz gut.
Die letzte Zeile (ein Prompt) endet jedoch nicht mit einem "\n", was Perl dazu veranlasst bis zur Unendlichkeit zu warten.
Gibt es eine Möglichkeit darauf zu reagieren, wenn dieser Prompt ausgespuckt wird.
Sorry, bin einigermaßen Perl-Neuling.
PS: Der Output des Prozesses sieht so aus:
Code: | Box Backup Query Tool v0.10, (c) Ben Summers and contributors 2003-2006
Using configuration file /etc/boxbackup/bbackupd.conf
Connecting to store...
Handshake with store...
Login to store...
Login complete.
Type "help" for a list of commands.
query > ### <- Diese Zeile wird nicht gelesen, wohl da ein linebreak fehlt
|
_________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
Anarcho Advocate
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Thu Feb 26, 2009 9:52 am Post subject: Re: [Perl] Pipe lesen |
|
|
manuels wrote: | Hallo zusammen,
ich möchte mit Perl Daten aus einer Pipe lesen, was ich folgendermaßen mache:
(Reader ist die Stdout-Pipe des Prozesses).
Das klappt auch für komplette Zeilen ganz gut.
Die letzte Zeile (ein Prompt) endet jedoch nicht mit einem "\n", was Perl dazu veranlasst bis zur Unendlichkeit zu warten.
Gibt es eine Möglichkeit darauf zu reagieren, wenn dieser Prompt ausgespuckt wird.
Sorry, bin einigermaßen Perl-Neuling.
PS: Der Output des Prozesses sieht so aus:
Code: | Box Backup Query Tool v0.10, (c) Ben Summers and contributors 2003-2006
Using configuration file /etc/boxbackup/bbackupd.conf
Connecting to store...
Handshake with store...
Login to store...
Login complete.
Type "help" for a list of commands.
query > ### <- Diese Zeile wird nicht gelesen, wohl da ein linebreak fehlt
|
|
Versuch mal ein
oder
vor der lesenden Schleife einzubauen. Ist aber ungetestet. _________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Thu Feb 26, 2009 11:48 am Post subject: |
|
|
Das klappt leider nicht.
Bei undef ließt er nicht mal die erste Zeile ein.
Bei "" bekomm ich _nur_ die Zeile Code: | Type "help" for a list of commands. |
_________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
papahuhn l33t
Joined: 06 Sep 2004 Posts: 626
|
Posted: Thu Feb 26, 2009 5:39 pm Post subject: |
|
|
Bei wartet Perl auf den kompletten Inhalt bis EOF, deshalb bekommst du erstmal nichts.
Spontan fällt mir nur ein, die Pipe Zeichen für Zeichen zu lesen, bei einem Newline das bisherig gelesene auszugeben und zusätzlich den String "query >" gesondert zu behandeln. _________________ Death by snoo-snoo! |
|
Back to top |
|
|
ixo Guru
Joined: 09 Jul 2005 Posts: 375
|
Posted: Fri Feb 27, 2009 6:26 pm Post subject: |
|
|
Zeichen für Zeichen zu lesen, wäre wahrscheinlich etwas lahm (falls es darauf ankommt).
Schneller geht es mit sysread, dann muss man allerdings ein die Zeilen mit split "herauspoolen"
Gruss, ixo |
|
Back to top |
|
|
|