Thread externes Programm aufrufen und Ausgabe umlenken (31 answers)
Opened by perln00b at 2010-01-15 20:55

MatthiasW
 2010-01-19 17:57
#130810 #130810
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Hm.. ich finde die Reihenfolge der Befehle innerhalb deiner Schleife etwas komisch. Zwar wird es vermutlich keinen merklichen Unterschied machen, aber das $mw->update; würde ich ans Ende des Schleifenrumpfs setzen, schließlich gibt es erst dann Änderungen.
Ansonsten kannst du die "" um $msg innerhalb des $text->insert('end',"$msg"); noch weglassen. Außerdem würde ich den Code noch anders formatieren, aber das ist halt Geschmackssache.

Beim open(...) möchte ich dir noch zur 3-Argument-Form raten:
Code (perl): (dl )
1
2
open my $pipe, '-|', 'meinprogramm'
  or die "Problem mit Pipe: $!\n";

Um ans Ende zu scrollen nach dem insert(...) ein see('end') einfügen, wie renee es bereits gesagt hat:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
open my $pipe, '-|', 'meinprogram'
  or die "Problem mit Pipe: $!";

while ( my $msg = <$pipe> ) {
    $text->insert( 'end', $msg );
    $text->see( 'end' );
    $mw->update;
} # while

close $pipe;

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread externes Programm aufrufen und Ausgabe umlenken