Path::Class::File::Stat(3pm)

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 later
  if ($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.

Releases

7 releases since Debian 7 (Wheezy); the text changed 3 times.

  1. 7
  2. 8–10
  3. 11
  4. 12–13

Author

Peter Karman, <[email protected]>

From libpath-class-file-stat-perl 0.05-3 in Debian 13 (Trixie). Parsed by carta from the page's man source.