On Thu, May 05, 2005 at 10:14:34AM +0300, Gaal Yahas wrote:
: On Wed, May 04, 2005 at 11:44:58PM -0700, Larry Wall wrote:
: > : How do I open a file named "-"?
: > 
: > Um, depending on what you mean, and whether we continue to support
: > the '=' pseudofile, maybe:
: > 
: >     $fh = io("-");
: >     $fh = open "-";
: >     $fh = $name eq '-' ?? $*IN :: open $name;
: 
: My concern is again with magic control. I've no gripes with the first
: or last of those, but I think the second should not be allowed by
: default. There has to be a safe mode for opening a file and knowing
: that's what you're opening: not a pipe, not stdio (hence there are places
: I can't permit myself to use #1). But as your third example suggests,
: never allowing open "-" will make unixish tools tedious to write, so
: maybe we need something like
: 
:     getopt(...);
:     $fh = open $in, :allowstdio;
: 
: (only named more eloquently).

I think that, as with various other parts of Perl 6, we can try
to sweep all the dwimmery into one spot so that it can be easily
recognized and/or avoided.  And the default "open" is not the place
for dwimmery.  It should just open an ordinary file by default.
The place for all that dwimmery is probably io().  In contrast, open
should be a multisub/method that gives you exact semantics depending
on the invocant.  In fact, io() might just be short for IO.open(),
which specifically requests dwimmery, just as URI.open() specifically
requests URI interpretation.  And bare open() is probably short for
File.open().  (Though for io(), it's probable that it actually does the
open lazily depending on usage, since that's part of its dwimmery.)

Larry

Reply via email to