opt is a deprecated package for parsing command options.
opt is deprecated. It's still bundled with Tcl because no one has taken the time to decouple Safe Base from it. Use something like cmdline instead.
% package require opt 0.4.5 % tcl::OptProc OptParseTest { {subcommand -choice {save print} "sub command"} {arg1 3 "some number"} {-aflag} {-intflag 7} {-weirdflag "help string"} {-noStatics "Not ok to load static packages"} {-nestedloading1 true "OK to load into nested slaves"} {-nestedloading2 -boolean true "OK to load into nested slaves"} {-libsOK -choice {Tk SybTcl} "List of packages that can be loaded"} {-precision -int 12 "Number of digits of precision"} {-intval 7 "An integer"} {-scale -float 1.0 "Scale factor"} {-zoom 1.0 "Zoom factor"} {-arbitrary foobar "Arbitrary string"} {-random -string 12 "Random string"} {-listval -list {} "List value"} {-blahflag -blah abc "Funny type"} {arg2 -boolean "a boolean"} {arg3 -choice "ch1 ch2"} {?optarg? -list {} "optional argument"} } { foreach v [info locals] { puts stderr [format "%14s : %s" $v [set $v]] } } OptParseTest % OptParseTest save -4 -pr 23 -libsok SybTcl -nostatics false ch1 args : save -4 -pr 23 -libsok SybTcl -nostatics false ch1 Args : subcommand arg1 -noStatics -libsOK -precision arg2 arg3 scale : 1.0 blahflag : abc subcommand : save aflag : 0 precision : 23 optarg : weirdflag : 0 arbitrary : foobar noStatics : 1 random : 12 nestedloading1 : 1 arg1 : -4 nestedloading2 : 1 arg2 : 0 libsOK : SybTcl arg3 : ch1 zoom : 1.0 intflag : 7 intval : 7 listval :
Some remarks: