Vigilando Relojes y la Entrada

El siguiente ejemplo resume el modo de uso:

pp2@nereida:~/src/perl/Event$ cat -n agenda.pl
 1  #!/usr/local/bin/perl
 2  use warnings;
 3  use strict;
 4
 5  use Event qw(loop unloop);
 6  use DateTime;
 7
 8  Event->io(fd => \*STDIN, poll => 'r', cb => \&io);
 9
10  loop;
11
12  sub io {
13    my $cmd = <STDIN>;
14    chomp $cmd;
15    return unless $cmd;
16
17    if (uc($cmd) eq 'Q') {
18      unloop;
19      return
20    }
21
22    unless ($cmd =~ /^(\d+)\s+(.+)/) {
23      warn"Error: Wrong format in <$cmd>\n" ;
24      return
25    }
26    my ($period, $msg) = ($1, $2);
27
28    my $at = time()+$period;
29    Event->timer(
30      prio => 2,
31      at   => $at,
32      cb   => sub {
33                warn "\nAlarm:\a $msg\n";
34                $_[0]->w->cancel;
35              },
36      repeat => 0,
37    );
38
39    my $dt = DateTime->from_epoch( epoch => $at, time_zone   => 'UTC' );
40    warn "Alarm scheduled for $msg at $dt.\n";
41
42  }

Casiano Rodríguez León
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19