Works (𝐑𝐚𝐤𝐮𝐝𝐨™ v2021.06): admin@mbook:~$ raku Luca_Ferrari2.p6 Usage: Luca_Ferrari2.p6 [--dir=<Str where { ... }>] admin@mbook:~$ raku Luca_Ferrari2.p6 --dir=foo foo But...warning "Specify the directory [$dir]" isn't printing when `--dir=foo` is omitted. HTH, Bill. On Tue, Apr 12, 2022 at 1:23 AM Luca Ferrari <fluca1978@gmail.com> wrote: > On Tue, Apr 12, 2022 at 10:15 AM Luca Ferrari <fluca1978@gmail.com> wrote: > > > > Hello all, > > given this simple program: > > > > sub MAIN( Str :$dir where { .so && .IO.d // warn "Specify the > > directory [$dir]" } ) { > > say $dir; > > } > > > > Shame on me: it works if I omit the topic and substitute it with the > explicit variable, thus: > > sub MAIN( Str :$dir where { $dir.so && $dir.IO.d // warn "Specify the > directory [$dir]" } ) { > say $dir; > } > > The only thing that I find in the documentation at > <https://docs.raku.org/type/Signature#index-entry-where_clause> is: > "The code in where clauses has some limitations: anything that > produces side-effects (e.g., printing output, pulling from an > iterator, or increasing a state variable) is not supported and may > produce surprising results if used. Also, the code of the where clause > may run more than once for a single typecheck in some > implementations." > > Is there a better approach to spurting warning messages when a > parameter is not correct (without dealing with USAGE() and friends)? > > Thanks, > Luca >Thread Previous | Thread Next