Re: [Fwd: [Fwd: Re: what is going on here?]]

2009-01-11 Thread Brandon S. Allbery KF8NH

On 2009 Jan 11, at 3:50, Richard Hainsworth wrote:

To be precise - why the ':' after the sort?

'%players.sort' calls the 'sort' method/sub on the hash '%players'.  
'{.value}' runs '.value' on $_ at some point. But when?


So once again, what is the ':' doing? How else could this code be  
written?



I think I have this right:  perl5 has indirect object syntax, which is  
ambiguous (the parse of a program can change by whether perl5 had  
previously seen a sub by that name).


In perl6, the colon is required to signify an indirect object, even if  
there are no following parameters.


--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com
system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon universityKF8NH




[Fwd: [Fwd: Re: what is going on here?]]

2009-01-11 Thread Richard Hainsworth

thanks for the response, but i was really looking for a bit more detail.

To be precise - why the ':' after the sort?

'%players.sort' calls the 'sort' method/sub on the hash '%players'. 
'{.value}' runs '.value' on $_ at some point. But when?


So once again, what is the ':' doing? How else could this code be written?

Hal Wigoda wrote:

the first line creates a hash,
the second line sorts the hash values into an array.
the third loops thru the array values printing one array member per line
On Jan 10, 2009, at 2:26 PM, Richard Hainsworth wrote:

Could someone help me understand what is going on in the following 
snippet?


my %players = {'william'=>2, 'peter'=>3,'john'=>1,'mary'=>5};
my @ranking = %players.sort: { .value };
for @ranking {.say};

I cut and pasted from Patrick's blog on sorting and played around  to 
get an array.

But ... I dont understand what is being passed to @ranking.
More precisely, I dont understand the meaning of the ':' after '.sort'

Where is this behaviour described? I looked in WITCH under :
but couldnt really understand it :(