Interesting question
I don't have a direct answer, but do have some ideas...
File::Touch uses the following sub to do the work:
if (-e $file){
my $sb = stat($file) or croak("Could not stat ($file): $!");
$atime = $sb->atime;
$mtime = $sb->mtime;
} else {
unless ($self->{_no_create}){
sysopen my $fh,$file,$SYSOPEN_MODE or croak("Can't create $fil
+e : $!");
close $fh or croak("Can't close $file : $!");
$atime = $time;
$mtime = $time;
}
}
ExtUtils::Command uses:
sub touch {
my $t = time;
expand_wildcards();
foreach my $file (@ARGV) {
open(FILE,">>$file") || die "Cannot write $file:$!";
close(FILE);
utime($t,$t,$file);
}
}
However I can't seem to find what touch() is being used in the case above, but as you can see, the two modules above use a different method to do the work... maybe in that lies the mystery.