Win8 Strawberry 5.8.9.5 (32) Sun 11/22/2020 3:11:34 C:\@Work\Perl\monks >perl -l use strict; use warnings; BEGIN { my %ops = ( ADD_DATA => [ qw(add 1) ], REMOVE_DATA => [ qw(remove 2) ], ); sub valid (*) { return exists $ops{$_[0]}; } sub modes (*) { return valid($_[0]) ? [ @{ $ops{$_[0]} } ] : die "bad '$_[0]'"; } } print 42 + modes(ADD_DATA) ->[1]; print 'foo' . modes('REMOVE_DATA')->[0]; print 'invalid' if not valid(yyy); print modes('xxx'); ^Z 43 fooremove invalid bad 'xxx' at - line 11.