From 7f6f10fbe150152629ad239aa6b2d22dd354b710 Mon Sep 17 00:00:00 2001 From: Joshua Nathaniel Pritikin Date: Tue, 28 Jul 1998 04:58:44 -0800 Subject: [PATCH] initial import of Module-Reload 1.05 from CPAN git-cpan-module: Module-Reload git-cpan-version: 1.05 git-cpan-authorid: JPRIT git-cpan-file: authors/id/J/JP/JPRIT/Module-Reload-1.05.tar.gz --- MANIFEST | 4 ++++ Makefile.PL | 4 ++++ README | 23 +++++++++++++++++++ Reload.pm | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 MANIFEST create mode 100644 Makefile.PL create mode 100644 README create mode 100644 Reload.pm diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..58a9d89 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,4 @@ +Reload.pm +MANIFEST +README +Makefile.PL diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..7cb3c40 --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,4 @@ +use ExtUtils::MakeMaker; + +WriteMakefile(NAME => "Module::Reload", + VERSION_FROM => "./Reload.pm"); diff --git a/README b/README new file mode 100644 index 0000000..55c76b6 --- /dev/null +++ b/README @@ -0,0 +1,23 @@ +=head1 NAME + +AutoReloader - Reload %INC files when updated on disk + +=head1 SYNOPSIS + + AutoReloader->check; + +=head1 DESCRIPTION + +When Perl pulls a file via C, it stores the filename in the +global hash C<%INC>. The next time Perl tries to C the same +file, it sees the file in C<%INC> and does not reload from disk. This +module's handler iterates over C<%INC> and reloads the file if it has +changed on disk. + +Set $AutoReloader::Debug to enable debugging output. + +=head1 DIRECTION + +It is expected that this will be included in the main perl +distribution shortly. + diff --git a/Reload.pm b/Reload.pm new file mode 100644 index 0000000..24335fb --- /dev/null +++ b/Reload.pm @@ -0,0 +1,64 @@ +use strict; +package Module::Reload; +use vars qw($VERSION $Debug %Stat); +$VERSION = "1.05"; + +sub check { + my $c=0; + while (my($key,$file) = each %INC) { + next if $file eq $INC{"Module/Reload.pm"}; #too confusing + local $^W = 0; + my $mtime = (stat $file)[9]; + $Stat{$file} = $^T + unless defined $Stat{$file}; + if ($mtime > $Stat{$file}) { + delete $INC{$key}; + require $key; + if ($Debug) { + warn "Module::Reload: process $$ reloading $key\n" + if $Debug == 1; + warn("Module::Reload: process $$ reloading $key (\@INC=". + join(', ',@INC).")\n") + if $Debug > 1; + } + ++$c; + } + $Stat{$file} = $mtime; + } + $c; +} + +1; + +__END__ + +=head1 NAME + +Module::Reload - Reload %INC files when updated on disk + +=head1 SYNOPSIS + + Module::Reload->check; + +=head1 DESCRIPTION + +When Perl pulls a file via C, it stores the filename in the +global hash C<%INC>. The next time Perl tries to C the same +file, it sees the file in C<%INC> and does not reload from disk. This +module's handler iterates over C<%INC> and reloads the file if it has +changed on disk. + +Set $Module::Reload::Debug to enable debugging output. + +=head1 SEE ALSO + +mod_perl, Event, ObjStore + +=head1 AUTHOR + +Copyright © 1997-1998 Doug MacEachern & Joshua Pritikin. All rights reserved. + +This package is free software and is provided "as is" without express +or implied warranty. It may be used, redistributed and/or modified +under the terms of the Perl Artistic License (see +http://www.perl.com/perl/misc/Artistic.html)