use Tk; open(CHILD, "./fileevent2piper 2>&1 |") or die "Can't open: $!"; my $mw = new MainWindow; my $t = $mw->Scrolled("Text",-width => 80, -height => 25, -wrap => 'none'); $t->pack(-expand => 1); $mw->fileevent('CHILD', 'readable', [\&fill_text_widget, $mw]); MainLoop; sub fill_text_widget { my ($widget) = @_; if (eof(CHILD)) { $widget->fileevent('CHILD', "readable", undef); # cancel binding return ; } else { if (sysread ('CHILD', $_, 128)) { print "here $_ \n"; $t->insert('end', $_); # Append the data read $t->yview('end'); } else { $t->insert('end', times); $t->yview('end'); $widget->fileevent('CHILD', "readable", undef); # cancel binding return; } } }