I am trying to figure a way to capture the first argument from @ARGV and check its validity by checking it against an array of known valid arguments. I thought I could do this with a simple foreach loop but I realized this won’t work because it will fail when the first invalid match comes back, which for my example script is the second argument.
Here the code that pertains to the problem, its concept script so there is not much.
my $primary_mode = $ARGV[0];
primary_mode_check($primary_mode);
sub primary_mode_check {
my @program_modes = ('create', 'destroy');
my $selected_mode = shift;
foreach my $mode (@program_modes) {
if ($selected_mode ne $mode) {
die RED "\'$selected_mode\' is not a valid program mode!\n";
}
}
}
Is there another way to accomplish the same idea? I am already using Getopt::Long in combonation with @ARGV to achieve a certain style. So I am focused on wanting to make this work.
UPDATE
I was thinking maybe I could match against regex, is that a possibility?
You code: Die if the arg doesn’t match one of the allowed modes.
You want: Die if the arg doesn’t match any of the allowed modes.
Put differently: Don’t die if the arg matches one of the allowed modes.
But a hash simplifies things a bit.