At 1:29 PM -0800 1/2/03, Michael G Schwern wrote:
>6.06 won't be going into bleadperl until Win32 dmake and VMS work, no point
>in breaking all of perl when we can do it as a module. Its currently
>blocked waiting for VMS fixes.
Hey, it's only a week since I said I'd take care of it "tomorrow"
:-). Actually I've looked at it more than once and the object
inheritance stuff is really driving me loopy. It appears that
File::Spec::VMS::eliminate_macros corrupts its own object reference
and then fails when it tries to invoke itself.
Here's where the object reference goes kaflooey:
$self = {} unless ref $self;
Since $self is the string 'File::Spec' it is not a reference, so it
gets overwritten with an empty, unblessed object. I have no idea
what the original intent behind this was. Then a few lines later it
tries to invoke itself via the nonexistent object:
File::Spec::VMS::eliminate_macros(/perl_root/lib/File/Spec/VMS.pm:45):
45: return join ' ', map { $self->eliminate_macros($_) } split /\s+/, $path;
DB<9> s
Can't call method "eliminate_macros" on unblessed reference at
/perl_root/lib/File/Spec/VMS.pm line 45.
File::Spec::VMS::eliminate_macros('File::Spec','[.ExtUtils.MakeMaker]\x{a}')
called at /perl_root/lib/File/Spec/VMS.pm line 189
File::Spec::VMS::catdir('File::Spec','perl_root:[lib.site_perl.VMS_AXP]','auto','[.ExtUtils.MakeMaker]\x{a}')
called at /perl_root/lib/File/Spec/VMS.pm line 219
File::Spec::VMS::catfile('File::Spec','perl_root:[lib.site_perl.VMS_AXP]','auto','[.ExtUtils.MakeMaker]\x{a}','.packlist')
called at lib/ExtUtils/MM_Any.pm line 84
ExtUtils::MM_Any::catfile('PACK001=HASH(0x52be08)','perl_root:[lib.site_perl.VMS_AXP]','auto','[.ExtUtils.MakeMaker]\x{a}','.packlist')
called at lib/ExtUtils/MM_VMS.pm line 1492
ExtUtils::MM_VMS::install('PACK001=HASH(0x52be08)') called at
lib/ExtUtils/MakeMaker.pm line 573
ExtUtils::MakeMaker::new('MM','PACK001=HASH(0x52be08)') called at
lib/ExtUtils/MakeMaker.pm line 48
ExtUtils::MakeMaker::WriteMakefile('NAME','ExtUtils::MakeMaker','VERSION_FROM','lib/ExtUtils/MakeMaker.pm','PREREQ_PM','HASH
The self-invocation of eliminate_macros only happens if the argument
has whitespace in it, and apparently the funny stuff at the end of
'[.ExtUtils.MakeMaker]\x{a}' is considered whitespace. I will try to
see what purpose that serves, if any, though it may be a red herring
in getting this to work.
--
________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]
"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser