Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 pondering the Monastery: (10)
As of 2015-07-03 08:44 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 (50 votes), past polls