develooper Front page | perl.perl5.porters | Postings from January 2012

Re: [perl #108470] Term::ReadLine should use AE instead of Tk forevent looping

From:
Rocco Caputo
Date:
January 30, 2012 12:23
Subject:
Re: [perl #108470] Term::ReadLine should use AE instead of Tk forevent looping
Message ID:
ABCD3CBD-6E2B-41A4-971D-71FD424BA035@pobox.com
On Jan 30, 2012, at 13:27, Matt S Trout wrote:

>> Tk is not a hard dependency at the moment, unless you want an event loop.  AE 
>> will not be a hard dependency (with my proposed patch), either.
> 
> So far as I can tell, ReadLine simply wants to know when a filehandle is
> readable.
> 
> So rather than adding yet another hard-coded piece of loop support (and one
> that as noted in my other message is unusable in some environments), perhaps
> we could simply add a callback interface 

That's a very sane idea.  It nicely sidesteps some maintenance pitfalls, like having to explicitly list supported libraries and optional dependencies.

>  my $ae_cb = sub {
>    my $cv = AE::cv;
>    AE::io($_[0]->in, 0, sub { $cv->send });
>    $cv->recv;
>  };
>  Term::ReadLine->new(..., read_callback => $ae_cb);

That's kind of a weird and AE-specific way to do that callback.  A more portable API would have two methods: One to access the library's file handle, and another to be called when that handle is ready to be read.

-- 
Rocco Caputo <rcaputo@pobox.com>



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About