#!/usr/bin/perl -w # this part demonstrates how to sort regular array of "string" and "number" @nums = (1000, 100, 20, 200); # by default, sort in asc print "\n\n***Sort Regular numerical Array....***\n\n"; print "ascending:\n"; @sortednum = sort{$a <=> $b}(@nums); print "@sortednum\n"; print "\ndescending:\n"; @sortednum = sort{$b <=> $a}(@nums); print "@sortednum\n"; printf("Sort array of strings in ASC order... \n\n"); @list = (1000, Amy, Zac, 123, Codey, 456); print "\nascending...\n"; @sortedList = sort @list; # this equivalent to @sortedList = sort {$a cmp $b } @list; print "@sortedList\n"; print "\ndescending...\n"; @sortedList = sort{$b cmp $a} @list; print "@sortedList\n"; print "\n\n *** Associative array sorting... ***\n\n"; %states = ("David" => "CA", "Smith" => "AL", "John" => "FL"); @keylist = keys %states; print "sorted by key (name)..ASC order\n\n"; @sortedKeys = sort { $a cmp $b } @keylist; @sortedKeys = sort @keylist; foreach(@sortedKeys) { print $_.": ".$states{$_}."\n"; } print "\n\nsorted by values -- states..ASC order\n\n"; # the key list is re-ordered in a way of sorted states @sortedKeys = sort{ $states{$a} cmp $states{$b} } @keylist; foreach(@sortedKeys) { print $_.": ".$states{$_}."\n"; #if ( $states{$_} =~ /CA/) { print $_." is from CA\n"; } } print "\n\n***sorted by values -- salaries.. ***\n\n"; %salaries=("David" => 20, "Smith" => 500, "John" => 300); # the key list is re-ordered in a way of sorted salaries, highest first @sortedKeys = sort{ $salaries{$b} <=> $salaries{$a} } keys %salaries; print "sorted by salary in DESC order\n\n"; foreach(@sortedKeys) { print $_.": ".$salaries{$_}."\n"; } print "\n\nBye...\n\n";