http://www.perlmonks.org?node_id=598263

belg4mit has asked for the wisdom of the Perl Monks concerning the following question:

Does anyone know how I can change the mtime of a folder from within perl on win32? I'd really prefer to not have to use an external binary (I have lots of files to process), and utime doesn't work on folders (with or without -U) but files are fine.

The platform supports it:

G:\>mkdir foo

G:\>stat foo
  File: `foo'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 435c336ch/1130115948d   Inode: 12243914462851298397  Links: 2
Access: (0755/drwxr-xr-x)  Uid: (  400/ jpierce)   Gid: (  401/mkpasswd)
Access: 2007-02-05 00:00:00.000000000 -0500
Modify: 2007-02-05 05:29:16.000000000 -0500
Change: 2007-02-05 05:29:16.000000000 -0500

G:\>touch --date "July 14, 2000" foo

G:\>stat foo
  File: `foo'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 435c336ch/1130115948d   Inode: 12243914462851298397  Links: 2
Access: (0755/drwxr-xr-x)  Uid: (  400/ jpierce)   Gid: (  401/mkpasswd)
Access: 2000-07-13 01:00:00.000000000 -0400
Modify: 2000-07-14 00:00:00.000000000 -0400
Change: 2000-07-14 00:00:00.000000000 -0400
But no joy:
G:\>perl -e "utime(undef, 1156817846, 'foo') #Mon Aug 28 22:17:26 2006"

G:\>stat foo
  File: `foo'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 435c336ch/1130115948d   Inode: 12243914462851298397  Links: 2
Access: (0755/drwxr-xr-x)  Uid: (  400/ jpierce)   Gid: (  401/mkpasswd)
Access: 2007-02-05 00:00:00.000000000 -0500
Modify: 2000-07-14 00:00:00.000000000 -0400
Change: 2000-07-14 00:00:00.000000000 -0400
This appears to be Siemens perl 5.8.0.

--
In Bob We Trust, All Others Bring Data.