Sorting techniques in Perl

2,178
-1

Published on

This course provides you with knowledge and skills in the areas of:
1. Sorting numbers
2. Sorting strings
3. Sorting arrays
4. Sorting hashes

This course does not cover sorting algorithms. Instead, it is about sorting various types of data in Perl.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,178
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sorting techniques in Perl

  1. 1. Sorting techniques in Perl Presented by Yogesh Sawant September 2010
  2. 2. Course Goal <ul><ul><li>This course provides you with knowledge and skills in the areas of </li></ul></ul><ul><ul><ul><li>Sorting numbers </li></ul></ul></ul><ul><ul><ul><li>Sorting strings </li></ul></ul></ul><ul><ul><ul><li>Sorting arrays </li></ul></ul></ul><ul><ul><ul><li>Sorting hashes </li></ul></ul></ul><ul><ul><li>This course does not cover sorting algorithms. Instead, it is about sorting various types of data in Perl. </li></ul></ul>
  3. 3. Course Map <ul><ul><li>Sorting in Perl </li></ul></ul><ul><ul><li>Sorting Numbers </li></ul></ul><ul><ul><li>Sorting alphanumeric strings </li></ul></ul><ul><ul><li>Case insensitive sorting </li></ul></ul><ul><ul><li>Sorting based on length of strings </li></ul></ul><ul><ul><li>Sorting a hash </li></ul></ul><ul><ul><li>Sorting a hash by values </li></ul></ul><ul><ul><li>Sorting a two dimensional array </li></ul></ul><ul><ul><li>Sorting a hash of arrays </li></ul></ul><ul><ul><li>Sorting an array of hashes </li></ul></ul><ul><ul><li>Sorting a hash of hashes </li></ul></ul>
  4. 4. The Usual Chore <ul><ul><li>Perl's built-in function sort provides quick and easy method of sorting data </li></ul></ul><ul><ul><ul><ul><li>@sorted = sort @array; </li></ul></ul></ul></ul><ul><ul><li>Sorts the list and returns the sorted list </li></ul></ul><ul><ul><li>The default sorting order is string comparison </li></ul></ul><ul><ul><ul><li>Defined null strings sort before everything else </li></ul></ul></ul><ul><ul><ul><li>Undefined values sort before defined null strings </li></ul></ul></ul><ul><ul><li>Perl 5.6 and earlier use quick sort algorithm </li></ul></ul><ul><ul><li>Perl 5.7 uses merge sort algorithm that is more stable than quick sort </li></ul></ul><ul><ul><li>Perl 5.8 has a sort pragma for limited control of the sort </li></ul></ul>
  5. 5. <ul><ul><li>How about sorting numbers? That's easy with the help of global variables $a and $b </li></ul></ul><ul><ul><ul><ul><li>@numbers_sorted = sort { $a <=> $b } @numbers; </li></ul></ul></ul></ul><ul><ul><li>We have provided a subroutine to the sort function, which replaces the default method of comparisons </li></ul></ul><ul><ul><li>Perl's numeric comparison operator <=> is useful here </li></ul></ul><ul><ul><li>Alternatively, </li></ul></ul><ul><ul><ul><ul><li>sub numerically { $a <=> $b } </li></ul></ul></ul></ul><ul><ul><ul><ul><li>@numbers_sorted = sort numerically @numbers; </li></ul></ul></ul></ul><ul><ul><ul><li>The subroutine may not be recursive, loop control operators shouldn't be used either </li></ul></ul></ul><ul><ul><ul><li>Two elements to be compared are not passed into it via @_ but by temporarily setting global variables $a and $b </li></ul></ul></ul><ul><ul><ul><li>Variables $a and $b are aliases to the real values, so don't modify them in the subroutine </li></ul></ul></ul>Sorting Numbers
  6. 6. <ul><ul><li>To sort numbers in descending order, we could reverse the order of $a and $b as: </li></ul></ul><ul><ul><ul><ul><li>@desc_sorted = { $b <=> $a } @numbers; </li></ul></ul></ul></ul><ul><ul><li>Alternatively, </li></ul></ul><ul><ul><ul><ul><li>sub numeric_desc { $b <=> $a } </li></ul></ul></ul></ul><ul><ul><ul><ul><li>@desc_sorted = sort numeric_desc @numbers; </li></ul></ul></ul></ul><ul><ul><li>Another way using the reverse built-in function, </li></ul></ul><ul><ul><ul><ul><li>@desc_sorted = reverse sort { $a <=> $b } @numbers; </li></ul></ul></ul></ul>Sorting Numbers
  7. 7. <ul><ul><li>What if I have data such as child1 , child3 , child11 , child21 , child5 , child24 and I want to sort them based on the numbers that follow after the alphabetic part? </li></ul></ul><ul><ul><ul><ul><li>@alphabetic_sorted = sort { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>substr($a, 5) <=> substr($b, 5) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} @alphabetic; </li></ul></ul></ul></ul><ul><ul><li>We've extracted the numeric part from the alphanumeric string and used it for comparisons </li></ul></ul>Alphanumeric
  8. 8. <ul><ul><li>I have a list of words that I want to sort without regard to upper case or lower case </li></ul></ul><ul><ul><li>Perl's built-in function lc , along with cmp operator helps us in this case: </li></ul></ul><ul><ul><ul><ul><li>sub without_case { lc ($a) cmp lc ($b) } </li></ul></ul></ul></ul><ul><ul><ul><ul><li>@sorted_strings = sort without_case @strings; </li></ul></ul></ul></ul>The case does not matter
  9. 9. <ul><ul><li>I want to sort strings based on their lengths </li></ul></ul><ul><ul><li>Perl's built-in function length makes our task easy: </li></ul></ul><ul><ul><ul><ul><li>sub by_length { length $a <=> length $b } </li></ul></ul></ul></ul><ul><ul><ul><ul><li>@lengthwise_sorted = sort by_length @strings; </li></ul></ul></ul></ul>Who's the shortest
  10. 10. Course Map <ul><ul><li>Sorting in Perl </li></ul></ul><ul><ul><li>Sorting Numbers </li></ul></ul><ul><ul><li>Sorting alphanumeric strings </li></ul></ul><ul><ul><li>Case insensitive sorting </li></ul></ul><ul><ul><li>Sorting based on length of strings </li></ul></ul><ul><ul><li>Sorting a hash </li></ul></ul><ul><ul><li>Sorting a hash by values </li></ul></ul><ul><ul><li>Sorting a two dimensional array </li></ul></ul><ul><ul><li>Sorting a hash of arrays </li></ul></ul><ul><ul><li>Sorting an array of hashes </li></ul></ul><ul><ul><li>Sorting a hash of hashes </li></ul></ul>
  11. 11. <ul><ul><li>How do I get key-value pairs of a hash in the sorted order as per keys? </li></ul></ul><ul><ul><ul><ul><li>for $key (sort keys %hash) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>     # $key and $hash{$key} are the key-value pairs </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><li>If the keys are numeric, </li></ul></ul><ul><ul><ul><ul><li>for $key (sort { $a <=> $b } keys %hash) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>     # $key and $hash{$key} are the key-value pairs </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul>Sorting a hash
  12. 12. <ul><ul><li>How do I get key-value pairs of a hash in the sorted order as per values ? </li></ul></ul><ul><ul><ul><li>for $key (sort { $hash{$a} cmp $hash{$b} } keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>  # $key and $hash{$key} are the key-value pairs </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>If the values are numeric </li></ul></ul><ul><ul><ul><li>for $key (sort { $hash{$a} <=> $hash{$b} } keys %hash) { </li></ul></ul></ul><ul><ul><li>     # $key and $hash{$key} are the key-value pairs </li></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>Sorting a hash by values
  13. 13. <ul><li>      my @array = ( </li></ul><ul><ul><li>[&quot;Kaka&quot;, &quot;Maicon&quot;], </li></ul></ul><ul><ul><li>[&quot;Romero&quot;, &quot;Tevez&quot;, &quot;Messi&quot;], </li></ul></ul><ul><ul><li>[&quot;Fierro&quot;, &quot;Suazo&quot;, &quot;Carmona&quot;], </li></ul></ul><ul><ul><li>); </li></ul></ul><ul><ul><li>Sort ASCIIbetically </li></ul></ul><ul><ul><ul><li>for my $row (@array) { </li></ul></ul></ul><ul><ul><ul><li>     print join(&quot;, &quot;, sort(@$row)), &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort based on length of strings </li></ul></ul><ul><ul><ul><li>for my $row (@array) { </li></ul></ul></ul><ul><ul><ul><li>print join(&quot;, &quot;, sort { length($a) <=> length($b)} (@$row)), &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>Two Dimensional Array
  14. 14. Course Map <ul><ul><li>Sorting in Perl </li></ul></ul><ul><ul><li>Sorting Numbers </li></ul></ul><ul><ul><li>Sorting alphanumeric strings </li></ul></ul><ul><ul><li>Case insensitive sorting </li></ul></ul><ul><ul><li>Sorting based on length of strings </li></ul></ul><ul><ul><li>Sorting a hash </li></ul></ul><ul><ul><li>Sorting a hash by values </li></ul></ul><ul><ul><li>Sorting a two dimensional array </li></ul></ul><ul><ul><li>Sorting a hash of arrays </li></ul></ul><ul><ul><li>Sorting an array of hashes </li></ul></ul><ul><ul><li>Sorting a hash of hashes </li></ul></ul>
  15. 15. <ul><li>   my %hash = ( </li></ul><ul><ul><li>Mexico => [&quot;Ricardo&quot;, &quot;Blanco&quot;, &quot;Franco&quot;], </li></ul></ul><ul><ul><li>Argentina => [&quot;Romero&quot;, &quot;Tevez&quot;, &quot;Messi&quot;], </li></ul></ul><ul><ul><li>Chile => [&quot;Fierro&quot;, &quot;Suazo&quot;, &quot;Carmona&quot;], </li></ul></ul><ul><ul><li>);‏ </li></ul></ul><ul><ul><li>Sort ASCIbetically based on keys of hash </li></ul></ul><ul><ul><li>Sort based on length of keys of hash </li></ul></ul><ul><ul><li>Sort ASCIIbetically based on strings in the arrays </li></ul></ul><ul><ul><li>Sort based on lengths of strings in the arrays </li></ul></ul><ul><ul><li>Sort ASCIbetically based on keys of hash and then sort ASCIIbetically based on strings in the arrays </li></ul></ul>Hash of Arrays
  16. 16. <ul><ul><li>Sort ASCIbetically based on keys of %hash </li></ul></ul><ul><ul><ul><li>for my $key (sort keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>     print $key, &quot;t&quot;, @{ $hash{$key} }, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort based on length of keys of %hash </li></ul></ul><ul><ul><ul><li>for my $key (sort { length($a) <=> length($b) } keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>     print $key, &quot;t&quot;, @{ $hash{$key} }, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort ASCIIbetically based on strings in the arrays </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>    print $key, &quot;t&quot;, join(&quot;, &quot;, sort @{ $hash{$key} }), &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>Hash of Arrays
  17. 17. <ul><ul><li>Sort based on lengths of strings in the arrays </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>    print $key, &quot;t&quot;, join(&quot;, &quot;, sort { length($a) <=> length($b) } @{ $hash{$key} }), &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort ASCIbetically based on keys of %hash and then sort ASCIIbetically based on strings in the arrays </li></ul></ul><ul><ul><ul><li>for my $key (sort keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>    print $key, &quot;t&quot;, join(&quot;, &quot;, sort@ { $hash{$key} }), &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>Hash of Arrays
  18. 18. Course Map <ul><ul><li>Sorting in Perl </li></ul></ul><ul><ul><li>Sorting Numbers </li></ul></ul><ul><ul><li>Sorting alphanumeric strings </li></ul></ul><ul><ul><li>Case insensitive sorting </li></ul></ul><ul><ul><li>Sorting based on length of strings </li></ul></ul><ul><ul><li>Sorting a hash </li></ul></ul><ul><ul><li>Sorting a hash by values </li></ul></ul><ul><ul><li>Sorting a two dimensional array </li></ul></ul><ul><ul><li>Sorting a hash of arrays </li></ul></ul><ul><ul><li>Sorting an array of hashes </li></ul></ul><ul><ul><li>Sorting a hash of hashes </li></ul></ul>
  19. 19. <ul><li>        my @array = ( </li></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>     Maicon => &quot;DF&quot;, Elano => &quot;MF&quot;, Robinho => &quot;FW&quot;, </li></ul></ul><ul><ul><li>}, </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>     Heinz => &quot;DF&quot;, Messi => &quot;FW&quot;, Milito => &quot;FW&quot;, </li></ul></ul><ul><ul><li>}, </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>     Fierro => &quot;MF&quot;, Medel => &quot;DF&quot;, Suazo => &quot;FW&quot;, </li></ul></ul><ul><ul><li>}, </li></ul></ul><ul><ul><li>); </li></ul></ul><ul><ul><li>sort ASCIIbetically based on keys of the hashes </li></ul></ul><ul><ul><li>sort based on length of keys of the hashes </li></ul></ul><ul><ul><li>sort ASCIIbetically based on values of the hashes </li></ul></ul>Array of Hashes
  20. 20. Array of Hashes <ul><ul><li>sort ASCIIbetically based on keys of the hashes </li></ul></ul><ul><ul><ul><li>for my $href (@array) { </li></ul></ul></ul><ul><ul><ul><li>    for my $key (sort keys %$href) { </li></ul></ul></ul><ul><ul><ul><li>       print $key, &quot; => &quot;, $href->{$key}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>    } </li></ul></ul></ul><ul><ul><ul><li>    print &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>sort based on length of keys of the hashes </li></ul></ul><ul><ul><ul><li>for my $href (@array) { </li></ul></ul></ul><ul><ul><ul><li>    for my $key (sort { length($a) <=> length($b) } keys %$href) { </li></ul></ul></ul><ul><ul><ul><li>     print $key, &quot; => &quot;, $href->{$key}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>   } </li></ul></ul></ul><ul><ul><ul><li>    print &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  21. 21. Array of Hashes <ul><ul><li>sort ASCIIbetically based on values of the hashes </li></ul></ul><ul><ul><ul><li>print &quot;nn sort ASCIIbetically based on values of the hashesn&quot;; </li></ul></ul></ul><ul><ul><ul><li>for my $href (@array) { </li></ul></ul></ul><ul><ul><ul><li>     for my $key (sort { ($href->{$a}) cmp ($href->{$b}) } keys %$href) { </li></ul></ul></ul><ul><ul><ul><li>         print $key, &quot; => &quot;, $href->{$key}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>     } </li></ul></ul></ul><ul><ul><ul><li>     print &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  22. 22. Course Map <ul><ul><li>Sorting in Perl </li></ul></ul><ul><ul><li>Sorting Numbers </li></ul></ul><ul><ul><li>Sorting alphanumeric strings </li></ul></ul><ul><ul><li>Case insensitive sorting </li></ul></ul><ul><ul><li>Sorting based on length of strings </li></ul></ul><ul><ul><li>Sorting a hash </li></ul></ul><ul><ul><li>Sorting a hash by values </li></ul></ul><ul><ul><li>Sorting a two dimensional array </li></ul></ul><ul><ul><li>Sorting a hash of arrays </li></ul></ul><ul><ul><li>Sorting an array of hashes </li></ul></ul><ul><ul><li>Sorting a hash of hashes </li></ul></ul>
  23. 23. Hash of Hashes my %hash = (     toons => {     daffy => 'duck',     tom => 'jerry',     road => 'runner',     },     cars => {     tiny => 'nano',     small => 'wagonR',     },     sites => {     mail => 'yahoo.com',     groups => 'google.com',     }, ); <ul><ul><li>Sort ASCIIbetically based on keys of %hash </li></ul></ul><ul><ul><li>Sort based on length of keys of %hash </li></ul></ul><ul><ul><li>Sort ASCIIbetically based on keys of inner hash </li></ul></ul><ul><ul><li>Sort based on length of keys of inner hash </li></ul></ul><ul><ul><li>Sort ASCIIbetically based on values of inner hash </li></ul></ul><ul><ul><li>Sort based on length of values of inner hash </li></ul></ul><ul><ul><li>Sort based on length of keys of %hash and then ASCIIbetically on keys of inner hashes </li></ul></ul><ul><ul><li>Sort ASCIIbetically based on keys of %hash and then ASCIIbetically on keys of inner hashes </li></ul></ul>
  24. 24. Hash of Hashes <ul><ul><li>Sort ASCIIbetically based on keys of %hash </li></ul></ul><ul><ul><ul><li>for my $key (sort keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>   print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>  for my $key_inner (keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>      print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>   } </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort based on length of keys of %hash </li></ul></ul><ul><ul><ul><li>for my $key (sort {length($a) <=> length($b)} keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>for my $key_inner (keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  25. 25. Hash of Hashes <ul><ul><li>Sort ASCIIbetically based on keys of inner hash </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>for my $key_inner (sort keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>Sort based on length of keys of inner hash </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>for my $key_inner (sort { length($a) <=> length($b) } keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  26. 26. Hash of Hashes <ul><ul><li>Sort ASCIIbetically based on values of inner hash </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>   print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>   for my $key_inner (sort { $hash{Key}->{$a} cmp $hash{$key}->{$b} } keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>      print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>     } </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  27. 27. Hash of Hashes <ul><ul><li>Sort based on length of values of inner hash </li></ul></ul><ul><ul><ul><li>for my $key (keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>   print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>  for my $key_inner (sort { length($hash{$key}{$a}) <=> length($hash{$key}{$b}) } keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>      print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><li>   } </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  28. 28. Hash of Hashes <ul><ul><li>Sort ASCIIbetically based on keys of %hash and then ASCIIbetically on keys of inner hashes </li></ul></ul><ul><ul><ul><li>for my $key (sort keys %hash) { </li></ul></ul></ul><ul><ul><ul><li>  print &quot;n $key: n&quot;; </li></ul></ul></ul><ul><ul><ul><li>  for my $key_inner (sort keys %{ $hash{$key} }) { </li></ul></ul></ul><ul><ul><ul><li>     print $key_inner, &quot; = &quot;, $hash{$key}{$key_inner}, &quot;n&quot;; </li></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  29. 29. How to Learn More <ul><ul><li>Internet </li></ul></ul><ul><ul><ul><li>Perl documentation – sort function </li></ul></ul></ul><ul><ul><ul><ul><li>http://perldoc.perl.org/functions/sort.html </li></ul></ul></ul></ul><ul><ul><ul><li>A Fresh Look at Efficient Perl Sorting </li></ul></ul></ul><ul><ul><ul><ul><li>http://www.sysarch.com/Perl/sort_paper.html </li></ul></ul></ul></ul><ul><ul><ul><li>Sorting in Perl </li></ul></ul></ul><ul><ul><ul><ul><li>http://raleigh.pm.org/sorting.html </li></ul></ul></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×