This is a great tutorial. Special the code with Data::Dumper.
This makes clear how map and sort interact.
Just a minor. The code will not run as displayed.
So I added a runnable example :
use Data::Dumper
## Build an array of anonymous arrays,
## each of which contains the sort field and the original element.
@anons = map{ [ substr( $_, 1 ) , $_ ] } qw[ A473 B659 C123 D222 E0
+01 ];;
my $dd=Data::Dumper->new([\@anons],[ qw(anons) ] )->Indent(2)->Quote
+keys(0)->Dump;
print $dd;
print '-' x 40 , "\n"; ## Now sort the anonymous arrays
## by comparing the extracted fields.
@sortedAnons = sort{ $a->[ 0 ] <=> $b->[ 0 ] } @anons;;
my $dd=Data::Dumper->new([\@sortedAnons],[ qw(sortedAnons) ] )->Inde
+nt(2)->Quotekeys(0)->Dump;
print $dd;
print '-' x 40 , "\n"; ## Finally, build the required sorted array
## by extracting the original elements discarding the sort fields.
@sorted = map{ $_->[ 1 ] } @sortedAnons;;
my $dd=Data::Dumper->new([\@sorted],[ qw(sorted) ] )->Indent(2)->Quo
+tekeys(0)->Dump;
print $dd;
print '-' x 40 , "\n";
The above code will show :
$anons = [
[
'473',
'A473'
],
[
'659',
'B659'
],
[
'123',
'C123'
],
[
'222',
'D222'
],
[
'001',
'E001'
]
];
----------------------------------------
$sortedAnons = [
[
'001',
'E001'
],
[
123,
'C123'
],
[
222,
'D222'
],
[
473,
'A473'
],
[
659,
'B659'
]
];
----------------------------------------
$sorted = [
'E001',
'C123',
'D222',
'A473',
'B659',
];
----------------------------------------
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
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, 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, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
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.
|
|