Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Help required on Getopt::Long

by vagabonding electron (Hermit)
on May 16, 2012 at 12:49 UTC ( #970826=note: print w/ replies, xml ) Need Help??


in reply to Help required on Getopt::Long

This seems to work (an idea from Re: Help required on Getopt::Long: Just add a line:

grep {/help/} @ARGV and print "This is help message\n" and exit;
above GetOptions.


Comment on Re: Help required on Getopt::Long
Download Code
Re^2: Help required on Getopt::Long
by Anonymous Monk on May 16, 2012 at 13:54 UTC
    It is not robust enough in case "help" is part of a string of a value to another option or an argument passed.
      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://970826]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2014-12-28 23:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (183 votes), past polls