Thanks for the reply!

That was the issue, the missing '=', and the order. I thought that
because it was a named parameter the order wouldn't matter.

Regarding the second question, on how to have the same switch multiple
times, using a @ sigil doesn't work:

Code:

subset Layout of Str where * ~~ /^<[12345]>\+[kk|1]$|^6\+$|^[studio|unusual]$/;

multi sub MAIN("apt",
        Layout :@layout! #= Apartment layout. Values accepted:
1+kk,2+kk,...,5+kk, 6+, studio, unusual
        ) {
    say "enter!";

}

When invoking:

$>  raku bin/script.raku --layout='unusual' --layout='1+kk' apt
Usage:
  bin/script.raku --layout=<Layout> ... apartment

    --layout=<Layout> ...    Apartment layout. Values accepted:
1+kk,2+kk,...,5+kk, 6+, studio, unusual


Unfortunately I'm unable to find any example in google on how to do
this. I guess i will have to look for some module.

Best regards,
David Santiago

Patrick Spek via perl6-users <perl6-us...@perl.org> escreveu no dia
segunda, 6/01/2020 à(s) 09:25:
>
> On Sun, 5 Jan 2020 22:32:02 +0000
> David Santiago <deman...@gmail.com> wrote:
>
> > Hello.
> >
> > I'm following
> > https://docs.raku.org/language/5to6-nutshell#Getopt::Long but i still
> > haven't figured it out how do i use a constraint in a named parameter
> > when processing a command line.
> >
> > I have this piece of code:
> >
> > multi sub MAIN("apt",
> >                 :$layout where $layout ~~
> > /^<[12345]>\+[kk|1]$|^6\+$|^[studio|unusual]$/ #= Apartment layout.
> > Values accepted: 1+kk,2+kk,...,5+kk, 6+, studio, unusual
> > ) {
> >     say "Enter";
> > }
> >
> > however when i run it i get the --help message:
> >
> > $ raku script.raku apt --layout '1+kk'
> > Usage:
> >   script.raku [--layout=<Any where { ... }>] apartment
> >
> >   --layout=<Any where { ... }>    Apartment layout. Values accepted:
> > 1+kk,2+kk,...,5+kk, 6+, studio, unusual
> >
> >
> > If i make layout a positional parameter then it works correctly. Is
> > there a way to make this work with a named parameter?
> > And how do i make possible to use the "--layout" option several times?
> > Changing the parameter from $layout to @layout doesn't work.
> >
> >
> >
> > Best regards,
> > David Santiago
>
> Hi David,
>
> The default parameter handling of Raku requires you to use an "=" sign
> between the option name and value. Additionally, the option needs to be
> before any positional arguments. Try running it as follows:
>
>     raku script.raku --layout='1+kk' apt
>
> As for the ability to add it several times, I believe using an @ sigil
> instead of a $ sigil should work, but perhaps someone else has spotted
> an issue that I missed here.
>
> --
> With kind regards,
>
> Patrick Spek
>
>
> www:  https://www.tyil.nl/
> mail: p.s...@tyil.nl
> pgp:  1660 F6A2 DFA7 5347 322A  4DC0 7A6A C285 E2D9 8827
>
> social: https://soc.fglt.nl/tyil
> git:    https://gitlab.com/tyil/

Reply via email to