Oops my example was missing the important $*USAGE message. And it makes sense to show the wrong named args before the wrong list args.
example.raku: multi sub MAIN(:$these ="These", :$are="Are") { say "$these $are"; }; multi sub MAIN(*@wrong-list,:$these ="These", :$are="Are",*%wrong-named) is hidden-from-USAGE {say "$*USAGE\nGot bad args " ~ %wrong-named ~ " "~ @wrong-list}' raku example.raku -these=HIHIHI -foo=BABABA On Tue, May 5, 2020 at 3:20 PM yary <not....@gmail.com> wrote: > > Here's something to play with (without explanation from me, busy enough sorry!) > > > example.raku: > multi sub MAIN(:$these ="These", :$are="Are") { say "$these $are"; }; > multi sub MAIN(*@wrong-list,:$these ="These", :$are="Are",*%wrong-named) is hidden-from-USAGE > {say "Got bad args " ~ @wrong-list ~ " "~ %wrong-named}' > > > raku example.raku -these=HIHIHI -foo=BABABA > > -y > > > On Tue, May 5, 2020 at 1:09 PM ToddAndMargo via perl6-users < perl6-us...@perl.org> wrote: >> >> >> On Tue, 5 May 2020, 06:46 ToddAndMargo via perl6-users, >> >> <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote: >> >> >> >> Hi All, >> >> >> >> Just to prove I read the stinker: >> >> https://docs.raku.org/routine/MAIN >> >> >> >> I am trying to get the following to do >> >> >> >> #!/usr/bin/env perl6 >> >> sub MAIN(:$these ="These", :$are="Are") { say "$these $are"; } >> >> >> >> This is working: >> >> >> >> $ MainTest.pl6 --are=our --these=those >> >> those our >> >> >> >> >> >> These two are not: >> >> >> >> 1) I am trying to get MAIN to give me an error I can >> >> call my help sub if a stray entry is placed in >> >> the run line >> >> >> >> $ MainTest.pl6 --are=our --these=those --saywhat=abc >> >> Usage: >> >> MainTest.pl6 [--these=<Any>] [--are=<Any>] >> >> >> >> Here it find `--saywhat=abc` and MAIN writes out the above >> >> usage statement. >> >> >> >> A) I want to write it out myself. I would like the >> >> string too, but don't have to have it. >> >> >> >> B) I would like the stray entry. >> >> >> >> >> >> 2) Here I want to pick up the remainder (abc) at the end, >> >> but can't figure out the syntax in the sub declaration. >> >> >> >> Something like: >> >> dnf --excluderepo=acb* install raku >> >> >> >> $ MainTest.pl6 --are=our --these=those abc >> >> Usage: >> >> MainTest.pl6 [--these=<Any>] [--are=<Any>] >> >> >> >> Instead of MAIN writing out usage. >> >> >> >> Many thanks, >> >> -T >> >> >> >> On 2020-05-05 00:38, Simon Proctor wrote: >> > I would suggest starting by reading this page in the docs : >> > https://docs.raku.org/language/create-cli >> > >> > Covers how $*USAGE is created and the various options you have for >> > providing help data. >> > >> >> Hi Simon, >> >> I must be missing something. That is just a rehash of the manual page I >> first posted with a few extra paragraphs at he top. >> >> :'( >> >> Maybe I should just write my own based on @*ARGS ? >> >> -T