---
name: "Path::Class::File::Stat"
section: "3pm"
platform: "linux"
package: "libpath-class-file-stat-perl"
version: "0.05-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Path::Class::File::Stat"
---

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

test whether the file beneath a Path::Class::File object has changed

## NAME

Path::Class::File::Stat - test whether the file beneath a Path::Class::File object has changed

## SYNOPSIS

```
  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
  }
```

## DESCRIPTION

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.

## SEE ALSO

Path::Class, Path::Class::File, File::Signature, File::Modified

## AUTHOR

Peter Karman, \<karman@cpan.org\>

## 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.
