On Sun, 2005-12-04 at 13:10 -0500, Mike Li wrote:
> what is a good translation of the following C into perl6?
> <code>
 [...]
>    int x = 0; int y[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; y[x++]++; /* line
> that matters */
 [...]
> </code>
> 
> in perl5, i would've written something like:
> <code>
> my $x = 0; my @y = 1..9; @y[$x++]++; print "$x\n"; print "@y\n"
> </code>

Note that when you run this in perl 5:

$ perl -we 'my $x = 0; my @y = 1..9; @y[$x++]++; print "$x\n";
            print "@y\n"'
Scalar value @y[$x++] better written as $y[$x++] at -e line 1.
1
2 2 3 4 5 6 7 8 9

You've already used a Perl6-ism!

> but in perl6, the '@' sigil always means list context, so should i
> write the following?
> 
> <code>
> my $x = 0; my @y = 1..9; [EMAIL PROTECTED]; print "$x\n"; print "@y\n"
> </code>

I'm not sure what you're trying to do with all those derefs, but the
only change you need to make to your original code is to put the @y
interpolation inside a block;

{ my $x = 0; my @y = 1..9; @y[$x++]++; print "$x\n"; print "{ @y }\n" }

Try downloading and installing pugs; it's great for trying out this sort
of thing!

Sam.

Reply via email to