Craig Berry wrote in response to Michael Schwern:

! My memory, not necessarily complete or correct, is that nearly all of
! what is now File::Spec -- not just fixpath() and eliminate_macros()
! -- used to be part of MakeMaker.  As various bits of MM got broken
! off and put into File::Spec, fixpath() and eliminate_macros() moved
! with them because there were so many references to things like
! $self->fixpath() and the object inheritance got too complicated if
! you had MM invoking File::Spec invoking MM.  One of the unfortunate
! side effects of this history is that we eliminate macros in contexts
! where there is no such thing as a macro.  What would be ideal is if
! the methods in File::Spec would only invoke these MM-only methods if they
! had been called from MM.  If this hasn't completely confused you, you
! are probably uniquely qualified to fix this mess ;-).

That is correct according to my memory of perl and MakeMaker history.
In fact it is so correct that I was almost compelled to comment on
the irony of one of Michael's recent posts to vmsperl concerning
the use of File::Spec to get the PREFIX macro as generated by
MakeMaker.  Originally an OS specific file pathing convention
infrastructure was built up to address all the OS dependent
Makefile generation problems encountered by ExtUtils::MakeMaker.
It was Kenneth Albanowski (later Barrie Slaymaker) who recognized
the general purpose utility of making all of that file specification
translation available outside of MakeMaker.  Likely in order to not break
things rather than pull it out of ExtUtils::MakeMaker they wrote File::Spec
and the various File::Spec::*.pm were worked on to replicate things,
some of which were apparently still left inside MakeMaker.

VMS may be one of the more difficult offenders in the whole
File::Spec business: although there are special C RTL calls
to convert unixy specs to VMS specs (decc$to_vms() and company)
they were long ago deemed inadequate for perl on VMS use and
were wrappered and made available to miniperl.exe
for the process of building extensions.  Since a good deal
of the unix/path to VMS:[PATH] translation is therefore
embedded into the way perl.exe runs on VMS it was difficult
for Kenneth and Barrie et alia to get at all of the file
specification translation API that VMS perl contains (neither
of them had login access to a VMS box as far as I ever knew).

Peter Prymmer


Reply via email to