#!/usr/bin/perl -w use strict; sub show_times { my ($f, $note) = @_; printf "atime=%d, mtime=%d, ctime=%d - %s\n", (stat($f))[8..10], $note; } my $file = shift or die $!; # save atime my ($atime, $mtime) = (stat($file))[8,9]; show_times($file, "initially"); # read from file { open my $fh, '<', $file or die $!; <$fh>; } show_times($file, "after read"); # restore atime utime($atime, $mtime, $file) or die "utime: $!"; show_times($file, "after atime restored"); #### $ touch somefile && sleep 2 && ./fix_accesstime.pl somefile atime=1386693000, mtime=1386693000, ctime=1386693000 - initially atime=1386693002, mtime=1386693000, ctime=1386693000 - after read atime=1386693000, mtime=1386693000, ctime=1386693002 - after atime restored