#!/usr/bin/perl use 5.12.1; my $esc; BEGIN { $esc = "\x1b["; print "${esc}2J${esc}3H"; } use Tk; use AnyEvent; use Term::ReadLine; my $t = 0; my $w = AE::timer (0,1,sub {print "${esc}s${esc}1H$t s ${esc}u";++$t}); my $term = Term::ReadLine->new('...'); $term->tkRunning(1); my $x = $term->readline('> '); #### #!/usr/bin/perl use Tk; use AnyEvent; use Term::ReadLine; use IO::File; use 5.12.1; sub LOG { state $fh; open $fh, '>', '/tmp/sopw.out' unless $fh; die $! unless $fh; autoflush $fh 1; say $fh @_; } package Term::ReadLine::AE; # mangle their tree, inserting ourselves in the front. unshift @Term::ReadLine::Stub::ISA, __PACKAGE__; #use Data::Dump qw(ddx); #ddx(\%INC); if (not defined &Tk::DoOneEvent) { ::LOG("overriding"); *Tk::DoOneEvent = sub { AnyEvent->_poll(); }; ::LOG("Not created?") unless defined &Tk::DoOneEvent; } our $cv; sub Tk_loop { my $self = shift; ::LOG("Entering Tk_loop");# unless $cv; $cv = AE::cv; $cv->recv(); } sub register_Tk { my $self = shift; ::LOG("Registering"); $Term::ReadLine::registered++ or AE::io($self->IN, 0, sub { $cv->send() }); } package main; use 5.12.1; my $esc; BEGIN { $esc = "\x1b["; print "${esc}2J${esc}3H"; } my $t = 0; my $w = AE::timer (0,1,sub {print "${esc}s${esc}1H$t s ${esc}u";++$t}); my $term = Term::ReadLine->new('...'); $term->tkRunning(1); my $x = $term->readline('> '); #### our $fe; sub register_Tk { my $self = shift; ::LOG("Registering"); $fe ||= AE::io($self->IN, 0, sub { $cv->send() }); }