Guest User

Untitled

a guest
Aug 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. How can match the first value of @ARGV to an array of possible options
  2. my $primary_mode = $ARGV[0];
  3. primary_mode_check($primary_mode);
  4.  
  5. sub primary_mode_check {
  6. my @program_modes = ('create', 'destroy');
  7. my $selected_mode = shift;
  8. foreach my $mode (@program_modes) {
  9. if ($selected_mode ne $mode) {
  10. die RED "'$selected_mode' is not a valid program mode!n";
  11. }
  12. }
  13. }
  14.  
  15. my @program_modes = qw( create destroy );
  16. sub primary_mode_check {
  17. my ($selected_mode) = @_;
  18. for my $mode (@program_modes) {
  19. return if $selected_mode eq $mode;
  20. }
  21.  
  22. die "'$selected_mode' is not a valid program mode!n";
  23. }
  24.  
  25. my %program_modes = map { $_ => 1 } qw( create destroy );
  26. sub primary_mode_check {
  27. my ($selected_mode) = @_;
  28. die "'$selected_mode' is not a valid program mode!n"
  29. if !$program_modes{$selected_mode};
  30. }
  31.  
  32. my $primary_mode = $ARGV[0] or die "No mode provided";
  33. primary_mode_check($primary_mode);
  34.  
  35. sub primary_mode_check {
  36. my $selected_mode = shift;
  37. my @program_modes = ('create', 'destroy');
  38. die "'$selected_mode' is not a valid program mode!n"
  39. unless grep { $selected_mode eq $_ } @program_modes;
  40. }
  41.  
  42. use v5.10;
  43. my $primary_mode = $ARGV[0] or die "No mode provided";
  44. my @program_modes = qw(create destroy);
  45. die "'$selected_mode' is not a valid program mode!n"
  46. unless $primary_mode ~~ @program_modes;
  47.  
  48. #!/usr/bin/env perl
  49.  
  50. use warnings; use strict;
  51.  
  52. my ($primary_mode) = @ARGV;
  53. my $allowed_modes = [qw(create destroy)];
  54.  
  55. check_primary_mode($primary_mode, $allowed_modes)
  56. or die sprintf "%s is not a valid program moden", $primary_mode;
  57.  
  58. sub check_primary_mode {
  59. my ($mode, $allowed) = @_;
  60. return grep $mode eq $_, @$allowed;
  61. }
  62.  
  63. use List::MoreUtils qw( first_index );
  64.  
  65. ...
  66.  
  67. sub check_primary_mode {
  68. my ($mode, $allowed) = @_;
  69. return (0 <= first_index { $mode eq $_ } @$allowed);
  70. }
  71.  
  72. my $primary_mode = $ARGV[0];
  73. primary_mode_check($primary_mode);
  74.  
  75. sub primary_mode_check {
  76. my %program_modes; @program_modes{qw(create destroy)}=();
  77. my $selected_mode = shift;
  78. die RED "'$selected_mode' is not a valid program mode!n"
  79. unless exists $program_modes{$selected_mode};
  80. }
  81.  
  82. use strict;
  83. use warnings;
  84.  
  85. my $cmd = shift @ARGV;
  86. my @allowed = qw/ install uninstall check purge /;
  87.  
  88. die "Cannot understand command" unless ( grep { $cmd eq $_ } @allowed );
  89.  
  90. my @modes = ('create', 'destroy');
  91. my $regexp = join "|", @modes;
  92. if ($selected =~ /^(?:$regexp)z/) {
  93. print "Found program mode '$1'n";
  94. } else {
  95. die RED "'$selected' is not a valid program mode!n";
  96. }
Add Comment
Please, Sign In to add comment