Sort a list of object identifiers
Sort a list of object identifiers is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Sort by OID numbers.
OID - Object Identifiers are used in Network data These numbers can vary in length, and have a dot "." between them. The individual number can be of different number of digits also.
Example:
==========================
INPUT
@arrayOID = (
".1.3.6.1.4.1.11.2.17.19.3.4.0.10", ".1.3.6.1.4.1.11150.3.4.0.2", ".1.3.6.1.4.1.11.2.17.19.3.4.0.19", ".1.3.6.1.4.1.11150.3.4.0.1", ".1.3.6.1.4.1.11.2.17.19.3.4.0.22", ".1.3.6.1.4.1.11.2.17.19.3.4.0.2", ".1.3.6.1.4.1.11150.3.4.0.11", ".1.3.6.1.4.1.11.2.17.19.3.4.0.1", ".1.3.6.1.4.1.11.2.17.3773.0.2", ".1.3.6.1.4.1.11.2.17.19.2.0.79", ".1.3.6.1.4.1.11150.3.4.0.21", ".1.3.6.1.4.1.11.2.17.19.2.0.9", ".1.3.6.1.4.1.11.2.17.19.3.4.0.25", ".1.3.6.1.4.1.11.2.17.19.3.4.0.32", ".1.3.6.1.4.1.11.2.17.19.3.4.0.4", ".1.3.6.1.4.1.11.2.17.19.3.4.0.31", ".1.3.6.1.4.1.11.2.17.19.3.4.0.3", ".1.3.6.1.4.1.11.2.17.3773.0.1"
);
============================
OUTPUT - Correctly Sorted
- 01 | .1.3.6.1.4.1.11.2.17.19.2.0.9 |
- 02 | .1.3.6.1.4.1.11.2.17.19.2.0.79 |
- 03 | .1.3.6.1.4.1.11.2.17.19.3.4.0.1 |
- 04 | .1.3.6.1.4.1.11.2.17.19.3.4.0.2 |
- 05 | .1.3.6.1.4.1.11.2.17.19.3.4.0.3 |
- 06 | .1.3.6.1.4.1.11.2.17.19.3.4.0.4 |
- 07 | .1.3.6.1.4.1.11.2.17.19.3.4.0.10 |
- 08 | .1.3.6.1.4.1.11.2.17.19.3.4.0.19 |
- 09 | .1.3.6.1.4.1.11.2.17.19.3.4.0.22 |
- 10 | .1.3.6.1.4.1.11.2.17.19.3.4.0.25 |
- 11 | .1.3.6.1.4.1.11.2.17.19.3.4.0.31 |
- 12 | .1.3.6.1.4.1.11.2.17.19.3.4.0.32 |
- 13 | .1.3.6.1.4.1.11.2.17.3773.0.1 |
- 14 | .1.3.6.1.4.1.11.2.17.3773.0.2 |
- 15 | .1.3.6.1.4.1.11150.3.4.0.1 |
- 16 | .1.3.6.1.4.1.11150.3.4.0.2 |
- 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
- 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
Perl
<lang perl>
- !/usr/bin/perl
- --------------------------
- Sort: -OID - Numeric
- Bert Mariani 2016-07-07
- --------------------------
@arrayOID = () ; @arrayOIDSorted = () ;
@arrayOID = (
".1.3.6.1.4.1.11.2.17.19.3.4.0.10", ".1.3.6.1.4.1.11150.3.4.0.2", ".1.3.6.1.4.1.11.2.17.19.3.4.0.19", ".1.3.6.1.4.1.11150.3.4.0.1", ".1.3.6.1.4.1.11.2.17.19.3.4.0.22", ".1.3.6.1.4.1.11.2.17.19.3.4.0.2", ".1.3.6.1.4.1.11150.3.4.0.11", ".1.3.6.1.4.1.11.2.17.19.3.4.0.1", ".1.3.6.1.4.1.11.2.17.3773.0.2", ".1.3.6.1.4.1.11.2.17.19.2.0.79", ".1.3.6.1.4.1.11150.3.4.0.21", ".1.3.6.1.4.1.11.2.17.19.2.0.9", ".1.3.6.1.4.1.11.2.17.19.3.4.0.25", ".1.3.6.1.4.1.11.2.17.19.3.4.0.32", ".1.3.6.1.4.1.11.2.17.19.3.4.0.4", ".1.3.6.1.4.1.11.2.17.19.3.4.0.31", ".1.3.6.1.4.1.11.2.17.19.3.4.0.3", ".1.3.6.1.4.1.11.2.17.3773.0.1"
);
### One big long line ... made readable @arrayOIDSorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, join , map { sprintf("%8d",$_) } split( /\./, $_) ] } @arrayOID;
print "\nAfter OID Sort \n\n"; $ptrN = 0; $entry = 1;
while ( $arrayOIDSorted[$ptrN] ) { print "$entry | $arrayOIDSorted[$ptrN] |\n" ; $entry++; $ptrN++; }
print "\nEnd OID Sort \n\n";
- =========================================
- After OID Sort
- 1 | .1.3.6.1.4.1.11.2.17.19.2.0.9 |
- 2 | .1.3.6.1.4.1.11.2.17.19.2.0.79 |
- 3 | .1.3.6.1.4.1.11.2.17.19.3.4.0.1 |
- 4 | .1.3.6.1.4.1.11.2.17.19.3.4.0.2 |
- 5 | .1.3.6.1.4.1.11.2.17.19.3.4.0.3 |
- 6 | .1.3.6.1.4.1.11.2.17.19.3.4.0.4 |
- 7 | .1.3.6.1.4.1.11.2.17.19.3.4.0.10 |
- 8 | .1.3.6.1.4.1.11.2.17.19.3.4.0.19 |
- 9 | .1.3.6.1.4.1.11.2.17.19.3.4.0.22 |
- 10 | .1.3.6.1.4.1.11.2.17.19.3.4.0.25 |
- 11 | .1.3.6.1.4.1.11.2.17.19.3.4.0.31 |
- 12 | .1.3.6.1.4.1.11.2.17.19.3.4.0.32 |
- 13 | .1.3.6.1.4.1.11.2.17.3773.0.1 |
- 14 | .1.3.6.1.4.1.11.2.17.3773.0.2 |
- 15 | .1.3.6.1.4.1.11150.3.4.0.1 |
- 16 | .1.3.6.1.4.1.11150.3.4.0.2 |
- 17 | .1.3.6.1.4.1.11150.3.4.0.11 |
- 18 | .1.3.6.1.4.1.11150.3.4.0.21 |
- End OID Sort
- ===========================================
</lang perl>