Parse command-line arguments: Difference between revisions

Added nim implementation.
(Added Kotlin)
(Added nim implementation.)
Line 295:
return 0;
}</lang>
 
=={{header|Nim}}==
<lang nim>import os
import parseopt
 
proc main =
# Directly accessing the app name and parameters
echo "app name: ", getAppFilename().extractFilename()
echo "# parameters: ", paramCount()
for ii in 1 .. paramCount(): # 1st param is at index 1
echo "param ", ii, ": ", paramStr(ii)
 
echo ""
 
# Using parseopt module to extract short and long options and arguments
var argCtr : int
 
for kind, key, value in getOpt():
case kind
of cmdArgument:
echo "Got arg ", argCtr, ": \"", key, "\""
argCtr.inc
of cmdLongOption, cmdShortOption:
case key
of "v", "n", "z", "w":
echo "Got a \"", key, "\" option with value: \"", value, "\""
else:
echo "Unknown option: ", key
 
of cmdEnd:
discard
 
 
main()
</lang>
 
Sample command line:
<pre>
parsecmdline ab -z cd ef -w=abcd --w=1234 -v -e -x 1-1000
</pre>
 
Output:
<pre>
app name: parsecmdline
# parameters: 10
param 1: ab
param 2: -z
param 3: cd
param 4: ef
param 5: -w=abcd
param 6: --w=1234
param 7: -v
param 8: -e
param 9: -x
param 10: 1-1000
 
Got arg 0: "ab"
Got a "z" option with value: ""
Got arg 1: "cd"
Got arg 2: "ef"
Got a "w" option with value: "abcd"
Got a "w" option with value: "1234"
Got a "v" option with value: ""
Unknown option: e
Unknown option: x
Got arg 3: "1-1000"
</pre>
 
=={{header|Perl}}==
Anonymous user