Don't ask to ask, just ask | |
PerlMonks |
Re^3: -e " " returns trueby BrowserUk (Patriarch) |
on Jul 06, 2004 at 12:54 UTC ( [id://372082]=note: print w/replies, xml ) | Need Help?? |
On this occasion, it appears that the problem is internal to Perl--with caveats. The problem occurs in these two lines from win32\win32.c (line numbers are approximate (5.8.4) because I've added debug code):
Prior to these to lines the vars; path / wbuffer contain the bad paths being tested ( ' ', ' . . ' etc. ), but after they contain the fully expanded current working directory. They should not. So, the problem is in the routines PerlDir_mapW() / PerlDir_mapA(). The stat being returned for non-existant directory paths is that of the current working directory. But there, my trail grows cold. These functions are not functions, but #defines. One path through the #defines in iperlsys.h has these resolved to:
But that can't be right because then they would be unchanged and the problem wouldn't occur. The other branch of the #if defined(PERL_IMPLICIT_SYS) in iperlsys.h resolves them to entries in a vtable.
but search high'n'low, I cannot find out where these vtable entries are filled in? It appears to be related to PL_curinterp and embedvar.h, but I tracked it back through about 6 levels of indirection before getting completely lost. It will take someone much cleverer than me to resolve this further.
In Section
Seekers of Perl Wisdom
|
|