Um... It, uh, half works. :-)
#!/usr/bin/perl use Tk; $mw = MainWindow->new(-name => 'Test', -title => 'Test'); $text = $mw->Text(); $text->pack(); tie *STDOUT, 'Text::Handle', $text; tie *STDERR, 'Text::Handle', $text; print "Hello\n"; print STDERR "Hi\n"; warn "Doesn't work! :(\n"; MainLoop; package Text::Handle; use Tie::Handle; @ISA = qw/Tie::StdHandle/; sub TIEHANDLE { my $class = shift; my $widget = shift; return bless \$widget, $class; } sub PRINT { my $self = shift; $$self->insert('end', join('',@_)); }
Hrm. Looks like warn and die behave specially when it comes to STDERR. I can see good and bad points to that. :-/
It would be nice to have it more "push" oriented so that you didn't have to poll pipes (either non-blockingly, or in a seperate thread/process) but it looks like you're still going to need warn and die %SIG handlers. But that's why I wrote Tk::Carp ;-)
bbfu
Seasons don't fear The Reaper.
Nor do the wind, the sun, and the rain.
We can be like they are.
In reply to (bbfu) Re2: (bbfu) (tied handles) Re: Redirect dos console output to a widget
by bbfu
in thread Redirect dos console output to a widget
by Merrick
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |