On 11/22/05, John E. Malmberg <[EMAIL PROTECTED]> wrote: > The file ext/List/Util/t/p_tainted.t is assuming a UNIX format pathname > is returned by __FILE__. > > This is a quick fix for VMS. > > A proper fix needs use the routines to either generate a relative > pathname or concatenate paths. > > Also I need to find out is where __FILE__ is being set because I need to > have it show up in UNIX format when the VMS CRTL is in UNIX > compatibility mode, and when I set the VMS CRTL in this mode, I am still > getting it in VMS format.
__FILE__ is initially set from PL_origfilename in perl.c. It's saved as CopFILE in each cop (control op) in the optree (grep for CopFILE_set for points where it's set.) In toke.c it can be modified when parsing #line directives (like in C, basically). Finally, the function pp_require() in pp_ctl.c can set it to the file name it opens, corresponding to a .pm file usually. That said, your fix looks strange to me. The "./" is here to ensure the script looks for tainted.t in the current directory. As p_tainted.t is run with the -T switch, the current directory is not included in @INC, so do() shouldn't look for tainted.t in the current directory at all, and then fail. And that's probably what's happening, since in this case p_tainted.t produces no output at all...