#! perl -slw use strict; use Win32::API::Prototype; ApiLink( 'Kernel32', q[ HANDLE FindFirstFile( LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFFData )] ) or die $^E; ApiLink( 'Kernel32', q[ BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFFData ) )] ) or die $^E; ApiLink( 'Kernel32', q[ HANDLE FindClose( HANDLE hFindDile )] ) or die $^E; =pod typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; # 4 FILETIME ftCreationTime; # 8 FILETIME ftLastAccessTime; # 8 FILETIME ftLastWriteTime; # 8 DWORD nFileSizeHigh; # 4 DWORD nFileSizeLow; # 4 DWORD dwReserved0; # 4 DWORD dwReserved1; # 4 TCHAR cFileName[MAX_PATH]; # 260 TCHAR cAlternateFileName[14]; # 14 } WIN32_FIND_DATA, # 328 *PWIN32_FIND_DATA; =cut my $FFData = chr(0) x 328; my $hFF = FindFirstFile( '.\*', $FFData ) or die $^E; do { print unpack 'x44Z260', $FFData; } while FindNextFile( $hFF, $FFData ); FindClose( $hFF );