So I'd approach this in one of two ways. Firstly there's the multi sub with constants option :
multi selector( "AbortRetryIgnore" ) { ... } multi selector( "CancelRetryContinue" ) { ... } multi selector( "Help" ) { ... } multi selector( "YesNo" ) { ... } multi selector( "Maybe" ) { ... } I'd do this if each option is pretty different in what happens. If on the other hand the way the options are handled pretty similar I'd go with and Enum : enum Option <AbortRetryIgnore CancelRetryContinue Help YesNo Maybe>; subset OptStr of Str where { Options::{$_}:exists}; multi sub selector( OptStr $opt ) { callwith( Options::{$opt} ) } multi sub selector( Option $opt ) { ... } This lets us all the sub with with the Option enum value eg : selector(YesNo) or the string variant (useful on the command line) eg : selector("YesNo") I'd do this if there's a lot of shared functionality in the selector sub. Hope that helps. You can combine the two options of course :) enum Option <AbortRetryIgnore CancelRetryContinue Help YesNo Maybe>; subset OptStr of Str where { Options::{$_}:exists}; multi sub selector( OptStr $opt ) { callwith( Options::{$opt} ) } multi selector( AbortRetryIgnore ) { ... } multi selector( CancelRetryContinue) { ... } multi selector( Help ) { ... } multi selector( YesNo ) { ... } multi selector( Maybe ) { ... } Simon On Wed, 4 Dec 2019 at 08:45, ToddAndMargo via perl6-users < perl6-us...@perl.org> wrote: > Hi All, > > I am cooking up something where I want top pass a value to a sub, but I > want to restrict what those values are. > > For instance, things like > > AbortRetryIgnore > CancelRetryContinue > Help > YesNo > Maybe > > And so on and so forth. > > If the wrong value is passed, I want the checker to crash > the sub. > > What is the best way of going about this? > > Many thanks, > -T > -- Simon Proctor Cognoscite aliquid novum cotidie http://www.khanate.co.uk/