.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "IO::Async::File 3pm" .TH IO::Async::File 3pm "2018-04-19" "perl v5.26.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" "IO::Async::File" \- watch a file for changes .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use IO::Async::File; \& \& use IO::Async::Loop; \& my $loop = IO::Async::Loop\->new; \& \& my $file = IO::Async::File\->new( \& filename => "config.ini", \& on_mtime_changed => sub { \& my ( $self ) = @_; \& print STDERR "Config file has changed\en"; \& reload_config( $self\->handle ); \& } \& ); \& \& $loop\->add( $file ); \& \& $loop\->run; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This subclass of IO::Async::Notifier watches an open filehandle or named filesystem entity for changes in its \f(CW\*(C`stat()\*(C'\fR fields. It invokes various events when the values of these fields change. It is most often used to watch a file for size changes; for this task see also IO::Async::FileStream. .PP While called \*(L"File\*(R", it is not required that the watched filehandle be a regular file. It is possible to watch anything that \f(CWstat(2)\fR may be called on, such as directories or other filesystem entities. .SH "EVENTS" .IX Header "EVENTS" The following events are invoked, either using subclass methods or \s-1CODE\s0 references in parameters. .ie n .SS "on_dev_changed $new_dev, $old_dev" .el .SS "on_dev_changed \f(CW$new_dev\fP, \f(CW$old_dev\fP" .IX Subsection "on_dev_changed $new_dev, $old_dev" .ie n .SS "on_ino_changed $new_ino, $old_ino" .el .SS "on_ino_changed \f(CW$new_ino\fP, \f(CW$old_ino\fP" .IX Subsection "on_ino_changed $new_ino, $old_ino" .SS "..." .IX Subsection "..." .ie n .SS "on_ctime_changed $new_ctime, $old_ctime" .el .SS "on_ctime_changed \f(CW$new_ctime\fP, \f(CW$old_ctime\fP" .IX Subsection "on_ctime_changed $new_ctime, $old_ctime" Invoked when each of the individual \f(CW\*(C`stat()\*(C'\fR fields have changed. All the \&\f(CW\*(C`stat()\*(C'\fR fields are supported apart from \f(CW\*(C`blocks\*(C'\fR and \f(CW\*(C`blksize\*(C'\fR. Each is passed the new and old values of the field. .ie n .SS "on_devino_changed $new_stat, $old_stat" .el .SS "on_devino_changed \f(CW$new_stat\fP, \f(CW$old_stat\fP" .IX Subsection "on_devino_changed $new_stat, $old_stat" Invoked when either of the \f(CW\*(C`dev\*(C'\fR or \f(CW\*(C`ino\*(C'\fR fields have changed. It is passed two File::stat instances containing the complete old and new \f(CW\*(C`stat()\*(C'\fR fields. This can be used to observe when a named file is renamed; it will not be observed to happen on opened filehandles. .ie n .SS "on_stat_changed $new_stat, $old_stat" .el .SS "on_stat_changed \f(CW$new_stat\fP, \f(CW$old_stat\fP" .IX Subsection "on_stat_changed $new_stat, $old_stat" Invoked when any of the \f(CW\*(C`stat()\*(C'\fR fields have changed. It is passed two File::stat instances containing the old and new \f(CW\*(C`stat()\*(C'\fR fields. .SH "PARAMETERS" .IX Header "PARAMETERS" The following named parameters may be passed to \f(CW\*(C`new\*(C'\fR or \f(CW\*(C`configure\*(C'\fR. .SS "handle => \s-1IO\s0" .IX Subsection "handle => IO" The opened filehandle to watch for \f(CW\*(C`stat()\*(C'\fR changes if \f(CW\*(C`filename\*(C'\fR is not supplied. .SS "filename => \s-1STRING\s0" .IX Subsection "filename => STRING" Optional. If supplied, watches the named file rather than the filehandle given in \f(CW\*(C`handle\*(C'\fR. The file will be opened for reading and then watched for renames. If the file is renamed, the new filename is opened and tracked similarly after closing the previous file. .SS "interval => \s-1NUM\s0" .IX Subsection "interval => NUM" Optional. The interval in seconds to poll the filehandle using \f(CWstat(2)\fR looking for size changes. A default of 2 seconds will be applied if not defined. .SH "METHODS" .IX Header "METHODS" .SS "handle" .IX Subsection "handle" .Vb 1 \& $handle = $file\->handle .Ve .PP Returns the filehandle currently associated with the instance; either the one passed to the \f(CW\*(C`handle\*(C'\fR parameter, or opened from the \f(CW\*(C`filename\*(C'\fR parameter. .SH "AUTHOR" .IX Header "AUTHOR" Paul Evans