pp2@nereida:~/src/perl/Event$ cat -n ./variablewatcherwriteonly.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use Event qw{time};
6 require NetServer::Portal::Top;
7
8 my $var = 0;
9
10 Event->timer(
11 interval => 2,
12 cb => sub {
13 $var++;
14 warn time.": Modified variable\n";
15 return;
16 }
17 );
18
19 Event->var(
20 var => \$var,
21 poll => 'r',
22 cb => sub { print time.": Read detected\n"; },
23 );
24
25 Event->var(
26 var => \$var,
27 poll => 'w',
28 cb => sub { print time.": Write detected. new value: $var\n" },
29 );
30
31 Event::loop;
Sólo es posible vigilar escalares. No es posible vigilar hashes o listas. Es posible detectar un acceso de lectura a un hash vigilando una referencia al hash (siempre que las lecturas y escrituras se hagan por medio de dicha referencia).
pp2@nereida:~/src/perl/Event$ variablewatcherwriteonly.pl 1209458901.6299: Modified variable 1209458901.63007: Write detected. new value: 1 1209458901.63017: Read detected 1209458903.62985: Modified variable 1209458903.62994: Read detected 1209458903.62998: Write detected. new value: 2 1209458903.63002: Read detected 1209458905.62981: Modified variable 1209458905.6299: Read detected 1209458905.62994: Write detected. new value: 3 1209458905.62998: Read detected 1209458907.62976: Modified variable 1209458907.62985: Read detected 1209458907.62989: Write detected. new value: 4 1209458907.62993: Read detected 1209458909.62972: Modified variable 1209458909.62981: Read detected 1209458909.62985: Write detected. new value: 5 1209458909.62989: Read detected ^C
