Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Sorting result of function call

by sgt (Deacon)
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

Replies are listed 'Best First'.
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://590879]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (3)
As of 2023-11-30 16:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?