.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) .\" .\" 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" '' '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 turned on, 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. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" 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 "Module::Refresh 3pm" .TH Module::Refresh 3pm "2011-10-26" "perl v5.12.4" "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" Module::Refresh \- Refresh %INC files when updated on disk .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& # During each request, call this once to refresh changed modules: \& \& Module::Refresh\->refresh; \& \& # Each night at midnight, you automatically download the latest \& # Acme::Current from CPAN. Use this snippet to make your running \& # program pick it up off disk: \& \& $refresher\->refresh_module(\*(AqAcme/Current.pm\*(Aq); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module is a generalization of the functionality provided by Apache::StatINC and Apache::Reload. It's designed to make it easy to do simple iterative development when working in a persistent environment. .PP It does not require mod_perl. .SS "new" .IX Subsection "new" Initialize the module refresher. .SS "refresh" .IX Subsection "refresh" Refresh all modules that have mtimes on disk newer than the newest ones we've got. Calls \f(CW\*(C`new\*(C'\fR to initialize the cache if it had not yet been called. .PP Specifically, it will renew any module that was loaded before the previous call to \f(CW\*(C`refresh\*(C'\fR (or \f(CW\*(C`new\*(C'\fR) and has changed on disk since then. If a module was both loaded for the first time \fBand\fR changed on disk between the previous call and this one, it will \fBnot\fR be reloaded by this call (or any future one); you will need to update the modification time again (by using the Unix \f(CW\*(C`touch\*(C'\fR command or making a change to it) in order for it to be reloaded. .ie n .SS "refresh_module_if_modified $module" .el .SS "refresh_module_if_modified \f(CW$module\fP" .IX Subsection "refresh_module_if_modified $module" If \f(CW$module\fR has been modified on disk, refresh it. Otherwise, do nothing .ie n .SS "refresh_module $module" .el .SS "refresh_module \f(CW$module\fP" .IX Subsection "refresh_module $module" Refresh a module. It doesn't matter if it's already up to date. Just do it. .PP Note that it only accepts module names like \f(CW\*(C`Foo/Bar.pm\*(C'\fR, not \f(CW\*(C`Foo::Bar\*(C'\fR. .ie n .SS "unload_module $module" .el .SS "unload_module \f(CW$module\fP" .IX Subsection "unload_module $module" Remove a module from \f(CW%INC\fR, and remove all subroutines defined in it. .ie n .SS "mtime $file" .el .SS "mtime \f(CW$file\fP" .IX Subsection "mtime $file" Get the last modified time of \f(CW$file\fR in seconds since the epoch; .ie n .SS "update_cache $file" .el .SS "update_cache \f(CW$file\fP" .IX Subsection "update_cache $file" Updates the cached \*(L"last modified\*(R" time for \f(CW$file\fR. .ie n .SS "unload_subs $file" .el .SS "unload_subs \f(CW$file\fP" .IX Subsection "unload_subs $file" Wipe out subs defined in \f(CW$file\fR. .SH "BUGS" .IX Header "BUGS" When we walk the symbol table to whack reloaded subroutines, we don't have a good way to invalidate the symbol table properly, so we mess up on things like global variables that were previously set. .SH "SEE ALSO" .IX Header "SEE ALSO" Apache::StatINC, Module::Reload .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2004,2011 by Jesse Vincent , Audrey Tang .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .PP See