Path::Class::File::Stat3pm
Test whether the file beneath a path::class::file object has changed
Usage
use Path::Class::File::Stat;my $file = Path::Class::File::Stat->new('path','to','file');# $file has all the magic of Path::Class::File# sometime laterif ($file->changed) {# do something provocative}
Overview
Path::Class::File::Stat is a simple extension of Path::Class::File. Path::Class::File::Stat is useful in long-running programs (as under mod_perl) where you might have a file handle opened and want to check if the underlying file has changed.
Methods
Path::Class::File::Stat extends Path::Class::File objects in the following ways.
use_md5
Calling this method will attempt to load Digest::MD5 and use that in addition to stat() for creating file signatures. This is similar to how File::Modified works.
changed
Returns the previously cached File::stat object if the file's device number and inode number have changed, or if the modification time or size has changed, or if use_md5() is on, the MD5 signature of the file's contents has changed.
Returns 0 (false) otherwise.
While File::Modified uses a MD5 signature of the stat() of a file to determine if the file has changed, changed() uses a simpler (and probably more naive) algorithm. If you need a more sophisticated way of determining if a file has changed, use the restat() method and compare the cached File::stat object it returns with the current File::stat object.
Example of your own changed() logic:
my $oldstat = $file->restat;my $newstat = $file->stat;# compare $oldstat and $newstat any way you like
Or just use File::Modified instead.
restat
Re-cache the File::stat object in the Path::Class::File::Stat object. Returns the previously cached File::stat object.
The changed() method calls this method internally if changed() is going to return true.
Copyright and license
Copyright (C) 2006, 2013 by Peter Karman
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Releases
7 releases since Debian 7 (Wheezy); the text changed 3 times.