I'm working on the chapter on I/O (Chapter 5 in the current Llama),
specifically reading from the command lines files.
Under the section "The for Statement" in S04, it says that the diamond
operator
while( <> ) { ... }
becomes in Perl 6
for =$*ARGS { ... }
In the Pugs I have (6.2.13 (r15868) on Intel darwin), =$*ARGS only
reads the lines from the first file in @ARGS. I don't see this idiom
used anywhere else in the tests or examples, either.
The $*ARGS variable shows up in this file, which looks like it's still
maintained:
http://svn.pugscode.org/pugs/docs/AES/S28draft.pod
but that points to another variable list that it says is more
complete, although it does not list $*ARGS:
http://svn.pugscode.org/pugs/docs/Perl6/Overview/Variable.pod
Is this something that's not yet implemented or just broken? Am I
missing some documentation about parts that aren't implemented yet?
I wrote a test to put into t/builtin/io (once I remember my password),
but since I haven't committed anything to pugs before, I want to ensure
it's not me being stupid. :)
Also, along with that, is there any counterpart to Perl 5's $ARGV? I
wanted to record the files =$*ARGS went through, but I didn't see a way
to discover that.
brian d foy wrote:
> Under the section "The for Statement" in S04, it says that the diamond
> operator
>
> while( <> ) { ... }
>
> becomes in Perl 6
>
> for =$*ARGS { ... }
Some time ago I read that too, and wondered why that's not =@*ARGS. That
seems more reasonable, because the command line arguments are stored in
@*ARGS.
I can't answer your question, sorry ;-).
Moritz
--
Moritz Lenz
http://moritz.faui2k3.org/ - http://sudokugarden.de/ - http://perl-6.de/
> Hi,
>
> brian d foy wrote:
> > Under the section "The for Statement" in S04, it says that the diamond
> > operator
> >
> > while( <> ) { ... }
> >
> > becomes in Perl 6
> >
> > for =$*ARGS { ... }
>
> Some time ago I read that too, and wondered why that's not =@*ARGS. That
> seems more reasonable, because the command line arguments are stored in
> @*ARGS.
well, $*ARGS is a magical filehandle, not a list of files. If you could
use an array there, I think you'd have to allow any array, and that
would be weird.
brian d foy wrote:
> In article <461E04E5...@casella.verplant.org>, Moritz Lenz
> <mor...@casella.verplant.org> wrote:
>
>> Hi,
>>
>> brian d foy wrote:
>>> Under the section "The for Statement" in S04, it says that the diamond
>>> operator
>>>
>>> while( <> ) { ... }
>>>
>>> becomes in Perl 6
>>>
>>> for =$*ARGS { ... }
>> Some time ago I read that too, and wondered why that's not =@*ARGS. That
>> seems more reasonable, because the command line arguments are stored in
>> @*ARGS.
>
> well, $*ARGS is a magical filehandle, not a list of files. If you could
> use an array there, I think you'd have to allow any array, and that
> would be weird.
Why would that be weird? When things like
my $file = "/etc/passwd";
for =$file -> $line { ... }
work, why shouldn't we allow things like
my @files = <foo bar>
for =@files -> $line { ... }
and let '=' followed by an empty list default to $*IN (like in =<>)?
I think that would be consequent magic, and very convenient.
(If you already had that discussion earlier, just say it and I'll shut
up ;-)
Cheers,
That's a typo (mine). It should be @*ARGS and refers to simple access to
the command line arguments. (Fixed.)
dvergin
Shouldn't $*ARGS still show up as the P6 counterpart to ARGV? S*ARGS as
the filehandle shows up in S04.
Yup. Fixed now in S28draft.pod. Mention in Variable.pod will follow.
dvergin