Véase AnyEvent.
pp2@nereida:~/src/perl/Event/anyevent$ cat -n example.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use AnyEvent;
5
6 my $cv = AnyEvent->condvar;
7
8 my $io_watcher = AnyEvent->io (
9 fh => \*STDIN,
10 poll => 'r',
11 cb => sub {
12 warn "io event <$_[0]>\n"; # will always output <r>
13 chomp (my $input = <STDIN>); # read a line
14 warn "read: $input\n"; # output what has been read
15 $cv->broadcast if $input =~ /^q/i; # quit program if /^q/i
16 },
17 );
18
19 my $timer; # declared only once
20
21 sub new_timer {
22 $timer = AnyEvent->timer (after => 1, cb => sub {
23 warn "\n<timeout>\n"; # print 'timeout' about every second
24 &new_timer; # and restart the time
25 });
26 }
27
28 new_timer; # create first timer
29
30 $cv->wait; # wait until user enters /^q/i
pp2@nereida:~/src/perl/Event/anyevent$ example.pl <timeout> Hola <timeout> io event <Event::Event::Io=SCALAR(0x8284bfc)> read: Hola q <timeout> uit io event <Event::Event::Io=SCALAR(0x8284bfc)> read: quit pp2@nereida:~/src/perl/Event/anyevent$
