#!/usr/bin/perl use warnings; use strict; use Tk; open(CHILD, "ls -laR h: |") or die "Can't open: $!"; my $mw = new MainWindow; my $t = $mw->Scrolled("Text",-width => 80, -height => 25, -wrap => 'none'); $t->pack(-expand => 1); CHILD->autoflush(1); $mw->fileevent('CHILD', 'readable', [\&fill_text_widget, $mw]); $mw->after(500); MainLoop; sub fill_text_widget { my ($widget) = @_; if (eof(CHILD)) { $widget->fileevent('CHILD', "readable", undef); # cancel binding return ; } if (sysread ('CHILD', $_, 4096)) { $t->insert('end', $_); # Append the data read $t->yview('end'); $mw->bell; } else { # sysread returned undef. Problem with file $t->insert('end', "ERROR !!!"); $widget->fileevent('CHILD', "readable", undef); # cancel binding } }