Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^3: Need help figuring out how to order/eval the numbers

by perlynewby (Scribe)
on Jun 22, 2015 at 23:31 UTC ( [id://1131544]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Need help figuring out how to order/eval the numbers
in thread Need help figuring out how to order/eval the numbers

ok, I read about most of my questions and I think I understand them some but I still have an issue with understanding the error check portion here. don't know what this does

return $numbers{$a} <=> $numbers{$b}; #I guess it's checking against e +achother...but how? is this a subroutine somewhere in a library/modul +e??

after reading, this is still a little vague. I have issues understanding when to use the [] vs (). any clarification will be appreciated.

$hash{$ita}[0]=$spa; #here we assign has_ref $span value address to fi +rst position in array for my $ita (sort { sort_italian() } keys %hash) #here ?? adding value + to array? am I right? not sure...

Replies are listed 'Best First'.
Re^4: Need help figuring out how to order/eval the numbers
by aaron_baugher (Curate) on Jun 22, 2015 at 23:59 UTC

    That's not error checking. His comment meant that you should add error checking there, to make sure the values being compared exist and are numbers, for instance.

    The <=> operator (search for it in perlop) compares two numbers and returns -1 if the left argument is less than the right one, 0 if they are equal, and +1 if the left argument is greater than the right. It's very commonly used in sort routines, since sort then uses those -1/0/+1 return values to decide which of two values should come first. The way sort works (simplistic explanation coming) is by comparing values in the list to each other, two at a time, and swapping them if they're out of order, and continuing until the entire list is sorted. The subroutine or block you provide as the sort routine is what it uses to compare the two values, which are passed to that routine as $a and $b.

    So he's having sort call sort_italian() to do the comparisons, and it uses the <=> operator to compare the values numerically.

    Aaron B.
    Available for small or large Perl jobs and *nix system administration; see my home node.

      Ahh, Thank you Aaron for your well explained comments/insights.

      darn, I couldn't find a section to read about the <=> thingy...In fact, I didn't know what to look for...I'm too new to know what that means or search for that thingy in my book I got from library.

      reading on this tonight so tomorrow may have more questions

Re^4: Need help figuring out how to order/eval the numbers
by aaron_baugher (Curate) on Jun 23, 2015 at 00:11 UTC
    for my $ita (sort { sort_italian() } keys %hash) { # loop code goes here }

    Here's what the code above does.

    1. First, keys gets all the keys from the hash, in no particular order, and passes them to its left as a list.
    2. sort then sorts that list based on the comparison found in the subroutine sort_italian(), and passes the now-sorted list of keys to its left.
    3. 'for' points the variable $ita at the first value on that sorted list, and runs the code in the enclosing braces following it (where I've replaced the code with a comment above). After that block is finished, for points $ita at the second item on the list and runs the block again, then runs it with $ita pointed at the third item, and so on until the list is exhausted or a command inside the block stops it (like last, for instance).

    See perlsyn for more info on the for (also known as foreach) operator. See the section "Foreach Loops" there; stay away from the C-style loops described in the "For Loops" section unless you know you need one.

    Aaron B.
    Available for small or large Perl jobs and *nix system administration; see my home node.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-26 03:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found