Sort a list of object identifiers: Difference between revisions

Added Lua version
m (→‎{{header|zkl}}: fix link)
(Added Lua version)
Line 108:
 
We also pull the result out of its boxes for display purposes.
 
=={{header|Lua}}==
Using the in-built table.sort with a custom compare function.
<lang Lua>local OIDs = {
".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"
}
 
function compare (a, b)
local aList, bList, Na, Nb = {}, {}
for num in a:gmatch("%d+") do table.insert(aList, num) end
for num in b:gmatch("%d+") do table.insert(bList, num) end
for i = 1, math.max(#aList, #bList) do
Na, Nb = tonumber(aList[i]), tonumber(bList[i])
if Na ~= Nb then return Na < Nb end
end
end
 
table.sort(OIDs, compare)
table.foreach(OIDs, print)</lang>
{{out}}
<pre>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</pre>
 
=={{header|Perl}}==
Anonymous user