On Thu, Apr 21, 2005 at 08:22:29AM +0200, Johan Vromans wrote:
: >From the perspective of 'current directory' there should also be a
: simple and elegant way that will do in most cases. Advanced tricks can
: be made possible using separate modules and such.
Yes, easy things should be easy, and hard things possible.
: Maybe the basic problem is that 'current directory' is a system
: dependent file system location that is not a fixed string, although it
: usually can be represented as a string. Similar to a simple 'open', I
: think the most common use of 'cwd' (or whatever) is to return a file
: system location that can be returned to later, much in the sense of
: 'tell' and 'seek'. I think this can be implemented in a quite fail
: safe way on most platforms.
I kinda like the proposed @CWD interface, insofar as it abstracts out
the most system-dependent part of the filename, the delimiter. Since
Perl 6 is throwing away $" in favor of a per-array property, that
property could simply be "/" for Unixish filenames. Then we can write
things like:
temp push @CWD, "subdir" err die "Can't chdir: $!";
I still think @CWD should try to track the actual directory you're
in though if some operation fails, which implies that the push above
is returning a reasonable result code, and whatever interface we give
for absolute navigation also has to return a reasonable result code,
which means it's not mere assignment. I think we can allow
@CWD = @SOMEDIR;
but that part of the interface probably needs to throw an exception
if it fails, since assignment must return @CWD. Or maybe there's some
way to hack it, but that seems kind of hackish.
One interesting thought. Since $" is turning into a property,
and since some directory schemes require varying delimiters, maybe
the $"-like property needs to be a list of delimiters, which you
repeat the last one of when you run out. So Windows might use <: />,
while VMS might use <[ ] /> or whatever it was, I forget. But this
would generalize to any array that needs varying delimiters in its
representation.
Larry