Changing Timestamps
In those rare cases when you want to lie to other programs about when a
file was most recently modified or accessed, you can use the utime function to
fudge the books a bit. The first two arguments give the new access time
and modification time, while the remaining arguments are the list of
filenames to alter to those timestamps. The times are specified in
internal timestamp format (the same type of values returned from the
moreinfo="none">stat function
that we mentioned in Chapter 12).
One convenient value to use for the timestamps is “right now,”
returned in the proper format by the time function. So to update all the files in the current directory to
look like they were modified a day ago, but accessed just now, we could
simply do this:
my $now = time; my $ago = $now − 24 * 60 * 60; # seconds per day utime $now, $ago, glob "*"; # set access to now, mod to a day ago
Of course, nothing stops you from creating a file that is arbitrarily stamped far in the future or past (within the limits of the Unix timestamp values of 1970 to 2038, or whatever your non-Unix system uses, unless you have 64-bit timestamps). Maybe you could use this to create a directory where you keep your notes for that time travel novel you’re writing.
The third timestamp (the ctime value) is always set to “now” whenever anything alters a file, so
there’s no way to set it (it would have to be reset to “now” after you
set it) with the utime function. That’s because its primary purpose is for ...