1Config::Watch(3)      User Contributed Perl Documentation     Config::Watch(3)
2
3
4

NAME

6       Log::Log4perl::Config::Watch - Detect file changes
7

SYNOPSIS

9           use Log::Log4perl::Config::Watch;
10
11           my $watcher = Log::Log4perl::Config::Watch->new(
12                                 file            => "/data/my.conf",
13                                 check_interval  => 30,
14                         );
15
16           while(1) {
17               if($watcher->change_detected()) {
18                   print "Change detected!\n";
19               }
20               sleep(1);
21           }
22

DESCRIPTION

24       This module helps detecting changes in files. Although it comes with
25       the "Log::Log4perl" distribution, it can be used independently.
26
27       The constructor defines the file to be watched and the check interval
28       in seconds. Subsequent calls to "change_detected()" will
29
30       ·   return a false value immediately without doing physical file checks
31           if "check_interval" hasn't elapsed.
32
33       ·   perform a physical test on the specified file if the number of
34           seconds specified in "check_interval" have elapsed since the last
35           physical check. If the file's modification date has changed since
36           the last physical check, it will return a true value, otherwise a
37           false value is returned.
38
39       Bottom line: "check_interval" allows you to call the function
40       "change_detected()" as often as you like, without paying the performing
41       a significant performance penalty because file system operations are
42       being performed (however, you pay the price of not knowing about file
43       changes until "check_interval" seconds have elapsed).
44
45       The module clearly distinguishes system time from file system time.  If
46       your (e.g. NFS mounted) file system is off by a constant amount of time
47       compared to the executing computer's clock, it'll just work fine.
48
49       To disable the resource-saving delay feature, just set "check_interval"
50       to 0 and "change_detected()" will run a physical file test on every
51       call.
52
53       If you already have the current time available, you can pass it on to
54       "change_detected()" as an optional parameter, like in
55
56           change_detected($time)
57
58       which then won't trigger a call to "time()", but use the value
59       provided.
60
61   SIGNAL MODE
62       Instead of polling time and file changes, "new()" can be instructed to
63       set up a signal handler. If you call the constructor like
64
65           my $watcher = Log::Log4perl::Config::Watch->new(
66                                 file    => "/data/my.conf",
67                                 signal  => 'HUP'
68                         );
69
70       then a signal handler will be installed, setting the object's variable
71       "$self->{signal_caught}" to a true value when the signal arrives.
72       Comes with all the problems that signal handlers go along with.
73
74   TRIGGER CHECKS
75       To trigger a physical file check on the next call to
76       "change_detected()" regardless if "check_interval" has expired or not,
77       call
78
79           $watcher->force_next_check();
80
81       on the watcher object.
82
83   DETECT MOVED FILES
84       The watcher can also be used to detect files that have moved. It will
85       not only detect if a watched file has disappeared, but also if it has
86       been replaced by a new file in the meantime.
87
88           my $watcher = Log::Log4perl::Config::Watch->new(
89               file           => "/data/my.conf",
90               check_interval => 30,
91           );
92
93           while(1) {
94               if($watcher->file_has_moved()) {
95                   print "File has moved!\n";
96               }
97               sleep(1);
98           }
99
100       The parameters "check_interval" and "signal" limit the number of
101       physical file system checks, simililarily as with "change_detected()".
102
104       Copyright 2002-2009 by Mike Schilli <m@perlmeister.com> and Kevin Goess
105       <cpan@goess.org>.
106
107       This library is free software; you can redistribute it and/or modify it
108       under the same terms as Perl itself.
109
110
111
112perl v5.12.2                      2010-08-31                  Config::Watch(3)
Impressum