#! perl -slw use strict; use Win32API::File qw[ FdGetOsFHandle ]; use Win32::API::Prototype; ApiLink( 'kernel32', 'BOOL GetFileTime( HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime )' ) or die $^E; my $osfh = FdGetOsFHandle( fileno( DATA ) ) or die $!; my( $ctime, $atime, $wtime ) = ( chr(0) x 8 ) x 3; GetFileTime( $osfh, $ctime, $atime, $wtime ) or die $^E; ## Ignore the stuf above, ## it's just a way of getting some FILETIMEs for testing. sub msFiletimeToUnix{ my ( $lo, $hi ) = unpack 'V2', $_[ 0 ]; my $nanosecs = $hi * 2**32 + $lo; return int( ($nanosecs - 116444736010000000) / 1E7 ); } for( $ctime, $atime, $wtime ) { print scalar localtime( msFiletimeToUnix( $_ ) ); } __DATA__ P:\test>368002 Fri Jun 18 18:47:04 2004 Fri Jun 18 20:10:35 2004 Fri Jun 18 20:10:33 2004