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