Thread Wertübergabe zwischen 2 Perl Programmen
(39 answers)
Opened by Robby at 2003-09-11 10:04
Vielleicht gibt dein zweites Programm seine Ausgabe nicht zeilenweise aus? Oder gepuffert? (Es wird vom ersten zeilenweise eingelesen, also siehst du erst was, wenn eine Zeile komplett ist.)
Hier ein voll funktionsfaehiges Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ##### worker.pl ##### #!/usr/bin/perl use strict; use warnings; $|++; # ungepuffert schreiben my $i=0; while (1) { print ++$i, "\n"; sleep 1; } ##### caller.pl ##### #!/usr/bin/perl use strict; use warnings; use Tk; use FileHandle; my $Mw = MainWindow->new (-title => 'Pipetest'); my $LogWin = $Mw->Text (-width => 80, -height => 20)->pack; $Mw->Button (-text => 'Exit', -command => sub { exit })->pack; # Filehandle anlegen my $fh = new FileHandle; # Pipe-open open ($fh, "./worker.pl |") or die "ups... $!"; # Fileevent mit Callback verbinden $Mw->fileevent ($fh, 'readable', \&funktion_die_was_macht); $Mw->MainLoop; ############### sub funktion_die_was_macht { $LogWin->insert ('end', "Lese " . <$fh>); } ##### |