use Win32::API 0.20; my $GetFullPathName = new Win32::API( 'kernel32', 'GetFullPathName', 'PNPP' => 'N', ); my $GetLongPathName = new Win32::API( 'kernel32', 'GetLongPathName', 'PPN' => 'N', ); my $file = $ARGV[0] || 'twig.pm'; my $full = "\0" x 2048; my $name = 0; my $rc; $rc = $GetFullPathName->Call( $file, 2048, $full, $name ); if($rc == 0) { die "GetFullPathName failed ($^E)\n"; } else { $full = unpack('A*', $full); print "GetFullPathName returned '$full'\n"; my $long = "\0" x 2048; $rc = $GetLongPathName->Call( $full, $long, 2048 ); $long = unpack('A*', $long); if($rc == 0) { die "GetLongPathName failed ($^E)\n"; } else { print "GetLongPathName returned '$long'\n"; } }