Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Sorting result of function call

by sgt (Chaplain)
on Dec 20, 2006 at 10:25 UTC ( #590879=note: print w/ replies, xml ) Need Help??


in reply to Sorting result of function call

I can confirm the same result on cygwin with 5.8.7:

% stephan@armen (/home/stephan) % % perl -w sort_context.px get_keys called:array:13 called:array:13 called:array:13 called:array:13

deparse tells us:

% stephan@armen (/home/stephan) % % perl -MO=Deparse sort_context.px use warnings; use strict 'refs'; my(%h) = (1, 2, 3, 4); sub say { print @_, $/; } sub get_keys { print 'called:'; if (wantarray) { print 'array:'; } else { print defined wantarray ? 'scalar' : 'void'; } return keys %h; } say sort('get_keys'); say((sort get_keys ())); say sort(&get_keys); say sort(&get_keys()); say sort(@{[get_keys()];}); say sort(@{[get_keys()];}); sort_context.px syntax OK
so in the first case get_keys gets interpreted as a string. seems like a bug (an old one...) with use strict; (especially if one follows the principle of least surprise) still it's true that it is quite ambiguous... hth --stephan


Comment on Re: Sorting result of function call
Select or Download Code
Re^2: Sorting result of function call
by Hofmator (Curate) on Dec 20, 2006 at 10:45 UTC
    Thanks for trying that out. Deparse is a good idea, I get the same results as you except for case two, where my Deparse says
    say sort('get_keys' ());
    vs your
    say((sort get_keys ()));

    Interestingly, feeding my Deparse output back to perl leads to a syntax error. Your version seems to indicate what perl is doing here. Trying to sort the empty list () with the compare-function get_keys, hence the empty return.

    -- Hofmator

    Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://590879]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2014-09-22 04:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (178 votes), past polls