Thread Wertübergabe zwischen 2 Perl Programmen (39 answers)
Opened by Robby at 2003-09-11 10:04

Dubu
 2003-09-15 12:27
#50429 #50429
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
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>);
}

#####

View full thread Wertübergabe zwischen 2 Perl Programmen