Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Perl] Pipe lesen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Wed Feb 25, 2009 9:01 pm    Post subject: [Perl] Pipe lesen Reply with quote

Hallo zusammen,

ich möchte mit Perl Daten aus einer Pipe lesen, was ich folgendermaßen mache:
Code:
    @out = <Reader>;
(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
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Thu Feb 26, 2009 9:52 am    Post subject: Re: [Perl] Pipe lesen Reply with quote

manuels wrote:
Hallo zusammen,

ich möchte mit Perl Daten aus einer Pipe lesen, was ich folgendermaßen mache:
Code:
    @out = <Reader>;
(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

Code:
local $/ = undef;
oder
Code:
local $/ = "";


vor der lesenden Schleife einzubauen. Ist aber ungetestet.
_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Thu Feb 26, 2009 11:48 am    Post subject: Reply with quote

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
View user's profile Send private message
papahuhn
l33t
l33t


Joined: 06 Sep 2004
Posts: 626

PostPosted: Thu Feb 26, 2009 5:39 pm    Post subject: Reply with quote

Bei
Code:
$/ = undef
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
View user's profile Send private message
ixo
Guru
Guru


Joined: 09 Jul 2005
Posts: 375

PostPosted: Fri Feb 27, 2009 6:26 pm    Post subject: Reply with quote

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" :wink:

Gruss, ixo
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum