The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

File::Properties - Perl module representing properties of a disk file

SYNOPSIS

  use File::Properties;

  my $fpc = File::Properties->cache('cache.db');

  my $fp = File::Properties->new('/path/to/file', $fpc);
  print "File properties:\n" . $fp->string . "\n";


  An alternative approach is to use the File::Properties::PropsCache
  module for construction of the cache and File::Properties objects:

  use File::Properties::PropsCache;

  my $fpc = File::Properties::PropsCache->new('cache.db');

  my $fp = $fpc->properties('/path/to/file');
  print "File properties:\n" . $fp->string . "\n";

ABSTRACT

  File::Properties is a Perl module representing properties of
  a disk file, with emphasis on media files.

DESCRIPTION

  This module provides a class representing properties of a disk file,
  with particular emphasis on media (image, video, and audio)
  files. The mime type and a SHA-2 digest can be computed for any
  regular file, and these properties are also available for the
  content of bzip2 and gzip compressed files. Media file properties
  consist of mime type and file type as extracted by Image::Exiftool,
  the media type ('image', 'video', or 'audio'), the modification
  date, and a hash representing the full EXIF data. For image files, a
  digest of the image pixel data is also available. If a reference to
  a File::Properties::Cache object is specified in the constructor,
  access to the properties is via the cache. Most of the methods are
  inherited from File::Properties::Media, from which it is derived.
new
  my $fp = File::Properties->new($path, $fpc);

Constructs a new File::Properties object.

path
  print "Canonical path: " . $fp->path . "\n";

Determine the canonical path of the represented file. This method is inherited from the File::Properties::Generic base class.

device
  print "Device number: " . $fp->device . "\n";

Determine the device number of the represented file. This method is inherited from the File::Properties::Generic base class.

inode
  print "Inode number: " . $fp->inode . "\n";

Determine the inode number of the represented file. This method is inherited from the File::Properties::Generic base class.

size
  print "File size: " . $fp->size . "\n";

Determine the size of the represented file. This method is inherited from the File::Properties::Generic base class.

mtime
  print "Modification time: " . $fp->mtime . "\n";

Determine the modification time of the represented file. This method is inherited from the File::Properties::Generic base class.

mode
  print "File mode: " . $fp->mode . "\n";

Determine the file mode integer (representing permissions and type) for the represented file. This method is inherited from the File::Properties::Generic base class.

children
  my $chsh = $fpg->children;

If the represented file is a directory, return a hash mapping file names within that directory to corresponding File::Properties object references. This method is inherited from the File::Properties::Generic base class.

isreg
  print (($fp->isreg)?"Is regular file\n":"Not regular file\n");

Determine if the represented file is a regular file. This method is inherited from the File::Properties::Generic base class.

isdir
  print (($fp->isdir)?"Is directory\n":"Not directory\n");

Determine if the represented file is a directory. This method is inherited from the File::Properties::Generic base class.

mmimetype
  print "Media mime type: " . $fp->mmimetype . "\n";

Determine the media mime type of the represented file. This is the mime type determined by Image::Exiftool if the file is a media file, otherwise it is the same as the value returned by the cmimetype method. This method is inherited from the File::Properties::Media base class.

cmimetype
  print "Content mime type: " . $fp->cmimetype . "\n";

Determine the content mime type of the represented file. This is the mime type of the compressed content for a gzip or bzip2 compressed file, otherwise it is the same as the value returned by the mimetype method. This method is inherited from the File::Properties::Compressed base class.

mimetype
  print "Mime type: " . $fp->mimetype . "\n";

Determine the mime type of the represented file. This method is inherited from the File::Properties::Regular base class.

mfiletype
  print "Media file type: " . $fp->mfiletype . "\n";

Determine the media file type, determined by Image::Exiftool, of the represented file. This method is inherited from the File::Properties::Media base class.

mediatype
  print "Media type: " . $fp->mediatype . "\n";

Determine the media type (the initial part of mime type, e.g. 'image') of the represented file. This method is inherited from the File::Properties::Media base class.

idigest
  print "Image digest: " . $fp->idigest . "\n";

Determine a SHA-2 digest of the pixel data in an image file.

cdigest
  print "Content digest: " . $fp->cdigest . "\n";

Determine the file content digest for the represented file. This is a SHA-2 digest of the compressed content for a gzip or bzip2 compressed file, otherwise it is the same as the value returned by the digest method. This method is inherited from the File::Properties::Compressed base class.

digest
  print "File digest: " . $fp->digest . "\n";

Determine a SHA-2 digest of the represented file. This method is inherited from the File::Properties::Regular base class.

datemod
  print "Modification date: " . $fp->datemod . "\n";

Determine the EXIF modification date. This method is inherited from the File::Properties::Media base class.

exifhash
  my $exh = $fpm->exifhash;

Return a hash mapping EXIF tags names to their values. This method is inherited from the File::Properties::Media base class.

iscompressed
  print "Is a compressed file\n" if ($fp->iscompressed);

Determine whether the file is a gzip or bzip2 compressed file. This method is inherited from the File::Properties::Compressed base class.

ismedia
  print "Is a media file\n" if ($fp->ismedia);

Determine whether the file is a media file. This method is inherited from the File::Properties::Media base class.

isimage
  print "Is an image file\n" if ($fp->isimage);

Determine whether the file is an image file.

string
  print $fp->string . "\n";

Construct a string representing the object data.

cachestatus
  if ($fp->cachestatus) {
    printf("All properties were retrieved from cache\n");
  } elsif ($fp->cachestatus(
                     $File::Properties::Regular::CacheTableName) {
    printf("Regular file properties were retrieved from cache\n");
  }

Determine whether properties were retrieved from the cache

_cacheinit
  $fp->_cacheinit($fpc, $options_hash);

Initialise the regular file properties cache table in the cache referred to by the File::Properties::Cache reference argument.

_cacheexpire
  $fp->_cacheexpire($fpc, 365);

Remove all cache data older (based on insertion date) than the specified number of days.

_cacheclean
  $fp->_cacheclean($fpc);

Remove all cache data for which the corresponding files can no longer be found on disk.

WARNING

This initial release of the module has not been extensively tested, but is released in its current state in the hope that others may find it useful. While they will be avoided as far as possible, incompatible interface changes may become necessary in a later release.

SEE ALSO

File::Properties::Cache, File::Properties::Media, File::Properties::Image

AUTHOR

Brendt Wohlberg <wohl@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010,2011 by Brendt Wohlberg

This library is available under the terms of the GNU General Public License (GPL), described in the LICENSE file included in this distribution.