On Tue, Jan 27, 2004 at 12:42:12AM +0800, Autrijus Tang wrote:
> 
> >     - The %2E is perhaps best left as a "." when not on VMS and the
> >       filename begins with a non-".".
> >         - This would make the paths easier to read and work with when
> >           spelunking around to see what's what.
> 
> I have reservations on that, since PAR names may well contain unsafe
> characters like "http://";.  Maybe the standard URL escaping rule should
> be used, where '.' is a safe char.

All I'm proposing here is to not escape safe chars like '.' (%2E).  I
well understand the need for escapism in general here :).

> >             - I'm pretending that PAR files only contain lib/...-like
> >               file trees and that any collisions are ok because they are
> >               collisions with or without this simplification due to
> >               normal first-match @INC processing.
> 
> That is an incorrect assumption -- see above for multiarch and recursive
> PAR setups.  So we will always need a coderef hook to set things up,
> and intermediate directories to distinguish the sources.

Would't the directory named with the arch name prevent collisions, just
like in real multi-arch perl lib dirs?  Or are people building different
architectures in to the same pathnames and using PAR options to only
unpack the appropriate ones?

> > > Also -- I dislike needless pre-extraction.  It penalize people using
> > > many PAR files, some of which may be remote.  I can see that files other
> > > than .pm and .dll needs to be pre-extracted, though.  Would be good
> > > enough for you?
> > 
> > I (did) need .pms, because they have POD I want Pod::Usage to find.
> 
> Oh, you need .pm files prior to require() them?  I think that is a
> relatively unusual demand, but I'm willing to be convinced otherwise.

Any POD parsing program may need that sort of thing, for instance to
generate a set of documentation that includes libs you haven't
require()ed.  VCP used to scan for .pm and .pod files using File::Find
on grep( -d, map "$_/VCP/Filter", @INC ) to see what HTML to generate.

Additionally, VCP uses @INC scanning to implement plugability.  By
doing the equivalent of:

    grep -f, map glob "$_/VCP/Filter/*.pm", @INC;

it can figure out what plugins are present.  Useful for UI work, for
instance, to know what options to present.

- Barrie

Reply via email to