Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^2: Help required on Getopt::Long

by Anonymous Monk
on May 16, 2012 at 13:54 UTC ( #970837=note: print w/ replies, xml ) Need Help??


in reply to Re: Help required on Getopt::Long
in thread Help required on Getopt::Long

It is not robust enough in case "help" is part of a string of a value to another option or an argument passed.


Comment on Re^2: Help required on Getopt::Long
Replies are listed 'Best First'.
Re^3: Help required on Getopt::Long
by ww (Bishop) on May 16, 2012 at 15:05 UTC
    but that seems to be easily remedied with anchors in the expression (and -- for ease of illustration -- using a defined array rather than @ARGV):
    #!/usr/bin/perl use 5.014; my $count; my @arr = qw/helper abc help def helpless helpful whelp help/; $count = grep {/^help$/}@arr and print "This is a help message. "; +# Note1 say "\$count: $count"; # This is a help message. $count: 2
    Note1: can also be written $count = grep /^help$/, @arr ....
      well, since we are about to intercept @ARGV, we can expect string of '--help', may be '-help' or even short versions such as '-h' or '--h' (though the latter seems odd). with version 5.10 or newer, smart match comes handy. i'd take 'help' out from GetOptions(), and prior to calling it, intercept @ARGV and call help() if match found. i like to separate the whole message printing in its own sub for easy modification on the text.
      $ cat ghosh.pl #!/usr/bin/perl use Getopt::Long; my $abc; @ARGV ~~ /^--?h(elp)?$/ && help(); GetOptions ("abc=s" => \$abc); sub help { print "This is help message\n"; exit; } if ($abc) { print qq(You have choosen "abc" as $abc\n) };
      now, the presence of either -h --h -help --help will trigger help message.
      $ ./ghosh.pl --help This is help message $ ./ghosh.pl --abc --help This is help message $ ./ghosh.pl --abc -help This is help message $ ./ghosh.pl --abc -h This is help message $ ./ghosh.pl --abc --h This is help message $ ./ghosh.pl --abc abc -h This is help message $ ./ghosh.pl --abc abc You have choosen "abc" as abc $ ./ghosh.pl --h This is help message $ ./ghosh.pl -h --abc This is help message

      Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://970837]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (16)
As of 2015-07-31 14:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (278 votes), past polls