At the moment I've enabled as the default (on systems that have the infrastructure) John Malmberg's symlink support in the Perl that will become 5.10. I'm having second thoughts about whether the underlying support in VMS is good enough or complete enough to make it the default, so I thought I would throw it out there for discussion.
Not long ago, we found out that the unlink() function in the CRTL doesn't work on symlinks unless DECC$POSIX_COMPLIANT_PATHNAMES is defined, and defining that is likely to break lots of things. John worked around that by writing his own unlink() based on SYS$ERASE, and other projects have done the same, for example Python: http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=1157019 I've been trying to track down test failures in the File::Find tests in blead, and have discovered that chdir() also does not work on symlinks. The obvious solution is to call realpath() in our chdir() wrapper before calling the CRTL's chdir(), but this obvious solution doesn't work. It doesn't work because realpath() does not work unless posix-compliant pathnames are enabled. Unlike the unlink case, that's documented behavior in the v8.3 CRTL: http://h71000.www7.hp.com/doc/83final/5763/5763pro_021.html#crtl_symlinks I can probably get around this by doing a SYS$PARSE on the symlink name without setting the special flag (NAML$M_OPEN_SPECIAL), so SYS$PARSE will follow the symbolic link and give me a resulting directory spec I can pass to chdir(). Actually the resulting spec will probably need further conversion because in my experiments if the symbolic link points to /disk/dir/subdir, SYS$PARSE gives me disk:[dir]subdir as the resulting spec, and I need to make that disk:[dir.subdir] to work with chdir(). Or I could perhaps try something based on readlink(), but then I don't know if that will work outside of PCP mode either. So rolling our own chdir() should be doable, one way or another. But this made me stop and wonder how many other CRTL routines that operate on files need to be changed to handle symbolic links properly, but haven't been as of OpenVMS v8.3. Anyone know of cases besides unlink() and chdir() that don't work? Should we be bold and enable this support in Perl even though we don't know how much of it actually works? -- ________________________________________ Craig A. Berry mailto:[EMAIL PROTECTED] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser