use Tk; my $mw = MainWindow->new; $mw->bind('' => \&abort); use Term::ReadLine; $SIG{INT} = \&abort; my $term = new Term::ReadLine(); loop(); sub loop { $term->tkRunning(1); $OUT = $term->OUT || \*STDOUT; while (1) { my ($user_input) = $term->readline("input>") ; process_line( $user_input ); } } sub abort { # do some cleanup $term->rl_deprep_terminal(); # Update! CORE::exit(); } sub process_line { print "user input: $_[0]\n" }