I'm polishing up a little code for some code I am sending to a potential employer, but I have encountered this weirdness in perl's syntax. Here is the skinny.
sub shift_sort {
my %hash = (1 => { foo => bar }, 2 => { baz => bletch });
shift @{ sort( { $a <=> $b } keys (%hash)) }; # doesnt work
my @foo = sort( { $a <=> $b } keys (%hash));
shift @foo; # works
}
if we look at
perldoc -f scalar we see
There is no equivalent operator to force an expression to be interpolated in list context because it's in practice never needed. If you really wanted
to do so, however, you could use the construction @{ (some expression) }, but usually a simple (some expression) suffices.
I've been away from perlmonks for a few days because my rassin-frassin
ISP has been offline for a week. I am aware that
Dominus has posted an excellent article on list vs. scalar context, but I only have another fifteen minutes left in the lab, and I needed to get the question asked (and hopefully answered). I am totally stumped here. I fixed it using @foo, but I would really rather not. Note please that this is working code that I was cleaning up, rather than broken code I need to fix -- so its a convenience and a courtesy more than anything. But I'd ideally like to get this done by monday when its supposed to be there. :)
indebted,
brother dep.
--
Laziness, Impatience, Hubris, and Generosity.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.