Perhaps they can be used. But you can't use the usual API for hard- and softlinks:
Softlinks:
- symlink is not implemented on Win32, neither in ActivePerl nor in Strawberry
- readlink doesn't work
- -l and lstat don't work as expected, they can't detect the symlink
- Symlinks are restricted to NTFS filesystems
- Win32::Symlink implements only symlink and readlink, based on code from PostgreSQL
- (Background information)
Hardlinks:
- link returns an error on Win32
- stat does not know about hardlinks
- Hardlinks are restricted to NTFS filesystems
- Win32::Hardlink implements only link, based on code from mvps.org. That hardlink function seems to need admin privileges and has its own error handling exiting the process bypassing perl's die (in lnw.cpp function doerr). So you can not use eval to trap errors, your program will always exit when an error occurs in that link implementation.
Update:
Nearly no Windows application is aware of hardlinks and "reparse points" (symlinks). It is very likely that the unusual behavior of the NTFS may cause problems in the application, perhaps with loss of data. I would not try to run a defrag utility on a production machine where someone has messed with hardlinks and reparse points.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)