This probably goes against everything a shell based platform wants, but would it be possible to give the program a sub-like signature?
I ask this after another painful session of forgetting how things work, reading Getopt::Long's documentation. signature ( Rule $pattern, bool +$help :short('h'), Int +$verbose :short('v'), Str [EMAIL PROTECTED] = <-> ); With GNU-like parsing, this'd make @*ARGS = < foo|bar --verbose 2 first second third >; @*ARGS = < foo|bar -vv first second third >; result in the lexical variables $pattern = rx/foo|bar/; $help = false; $verbose = 2; @files = < first second third >; and @*ARGS = < foo -- -v --verbose --help forth fifth sixth >; in $pattern = rx/foo/; $help = false; $verbose = undef; @files = < -v --verbose --help forth fifth sixth >; and @*ARGS = < pattern > in $pattern = rx/pattern/; $help = false; $verbose = undef; @files = ('-'); Probably a macro can handle this, but does (will) Perl parse a signature-like argument list and hand the macro something it can use, or would this require source-filter like trickery? Juerd -- http://convolution.nl/maak_juerd_blij.html http://convolution.nl/make_juerd_happy.html http://convolution.nl/gajigu_juerd_n.html