File::Touch3pm
Update file access and modification times, optionally creating files if needed
Usage
use File::Touch 0.12;@file_list = ('one.txt','../two.doc');$count = touch(@file_list);use File::Touch;$reference_file = '/etc/passwd';$touch_obj = File::Touch->new(reference => $reference_file,no_create => 1);@file_list = ('one.txt','../two.doc');$count = $touch_obj->touch(@file_list);
Overview
This module provides both a functional and OO interface for changing the file access and modification times on files. It can optionally create the file for you, if it doesn't exist.
Note: you should specify a minimum version of 0.12, as per the SYNOPSIS, as that fixed an issue that affected systems that have sub-second granularity on those file times.
Here's a list of arguments that can be used with the object-oriented contruction:
- atime_only => [0|1]
-
If nonzero, change only the access time of files. Default is zero.
- mtime_only => [0|1]
-
If nonzero, change only the modification time of files. Default is zero.
- no_create => [0|1]
-
If nonzero, do not create new files. Default is zero.
- reference => $reference_file
-
If defined, use timestamps from this file instead of current time. The timestamps are read from the reference file when the object is created, not when
"<-"touch>> is invoked. Default is undefined.
- time => $time
-
If defined, then this value will be used for both access time and modification time, whichever of those are set. This time is overridden by the
"atime"and"mtime"arguments, if you use them.
- atime => $time
-
If defined, use this time (in epoch seconds) instead of current time for access time.
- mtime => $time
-
If defined, use this time (in epoch seconds) instead of current time for modification time.
Examples
Update access and modification times, creating nonexistent files
use File::Touch;my @files = ('one','two','three');my $count = touch(@files);print "$count files updated\n";
Set access time forward, leave modification time unchanged
use File::Touch;my @files = ('one','two','three');my $day = 24*60*60;my $time = time() + 30 * $day;my $ref = File::Touch->new( atime_only => 1, time => $time );my $count = $ref->touch(@files);print "$count files updated\n";
Set modification time back, update access time, do not create nonexistent files
use File::Touch;my @files = ('one','two','three');my $day = 24*60*60;my $time = time() - 30 * $day;my $ref = File::Touch->new( mtime => $time, no_create => 1 );my $count = $ref->touch(@files);print "$count files updated\n";
Make a change to a file, keeping its timestamps unchanged
use File::Touch;my $date_restorer = File::Touch->new(reference => $file);# Update the contents of $file here.$date_restorer->touch($file);
Repository
<https://github.com/neilb/File-Touch>
Releases
11 releases since Debian 3.1 (Sarge); the text changed 6 times.