<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Sorry, Indy, you're being masochistic.<div><br class="webkit-block-placeholder"></div><div>I can sort-of understand someone using GetOptions in the option-name =&gt; variable-to-store-it-in style, though I agree with Uri, far better to pass in a hash into which all the options are stored. You're doing that, the hard way, passing in the hash keys one by one. Why not specify the whole hash, once?</div><div><br class="webkit-block-placeholder"></div><div>GetOptions( \%opt,</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "verbose|v",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "test",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"debug|d",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"takes_a_string=s",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;);</div><div><br class="webkit-block-placeholder"></div><div>You stored 'v' in $opt{verbose}; I've achieved the same thing by specifying 'verbose' and 'v' as aliases for the same thing, similarly 'debug' and 'd'. Mind you, by default Getopt::Long ignores case and allows abbreviation of long option names, so long as the option is uniquely identified. &nbsp;So you can specify</div><div><br class="webkit-block-placeholder"></div><div><div>GetOptions( \%opt,</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "verbose",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "test",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"debug",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"takes_a_string=s",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;);</div><div><br class="webkit-block-placeholder"></div></div><div>and then invoke the program with &nbsp; -v -d ... and since there is only one option beginning with a V and only one beginning with a D, it knows which one you want.</div><div><br class="webkit-block-placeholder"></div><div>Tom</div><div><br><div><div>On 5-Jan-08, at 5:31 PM, Indy Singh wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Here is one way to do it:<br><br>#!/usr/bin/perl -w<br>use strict;<br>use Getopt::Long;<br><br>my %opt;<br><br>GetOptions(<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"v" =&gt; \$opt{verbose},<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"test" =&gt; \$opt{test},<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"d" =&gt; \$opt{debug},<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"debug" =&gt; \$opt{debug},<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br><br>if ($opt{verbose}) {<br> &nbsp;print "VERBOSE\n";<br>}<br>else {<br> &nbsp;print "quiet\n";<br>}<br><br><br><br><br>Indy Singh<br>IndigoSTAR Software -- <a href="http://www.indigostar.com">www.indigostar.com</a><br><br><br>----- Original Message ----- <br>From: &lt;<a href="mailto:arocker@vex.net">arocker@vex.net</a>&gt;<br>To: &lt;<a href="mailto:tpm@to.pm.org">tpm@to.pm.org</a>&gt;<br>Sent: Saturday, January 05, 2008 4:53 PM<br>Subject: [tpm] Command line option processing<br><br><br><blockquote type="cite"><br></blockquote><blockquote type="cite">I'm trying to implement a simple check of a command line option (just<br></blockquote><blockquote type="cite">present or absent, no arguments). The shell equivalent, which works, <br></blockquote><blockquote type="cite">is:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">while getopts v opt<br></blockquote><blockquote type="cite">do<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;case $opt<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;in<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;v) echo "Hi"<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;&nbsp;;;<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;esac<br></blockquote><blockquote type="cite">done<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The perl, which doesn't:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">#! /usr/bin/perl<br></blockquote><blockquote type="cite">use warnings;<br></blockquote><blockquote type="cite">use Getopt::Std;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">getopt ("v"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# primitive help facility -v is only option<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">if ( $Getopt::Std::opt_v ) {<br></blockquote><blockquote type="cite"> &nbsp;&nbsp;print Hi\n";<br></blockquote><blockquote type="cite">}<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">and changing the test to if ( $opt ) doesn't do any better.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I've delved into the Camel, the Cookbook, Nutshell and every other<br></blockquote><blockquote type="cite">grimoire I can find, so public humiliation is the only route left. <br></blockquote><blockquote type="cite">What<br></blockquote><blockquote type="cite">idiotic error am I making?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">toronto-pm mailing list<br></blockquote><blockquote type="cite"><a href="mailto:toronto-pm@pm.org">toronto-pm@pm.org</a><br></blockquote><blockquote type="cite"><a href="http://mail.pm.org/mailman/listinfo/toronto-pm">http://mail.pm.org/mailman/listinfo/toronto-pm</a> <br></blockquote><br>_______________________________________________<br>toronto-pm mailing list<br><a href="mailto:toronto-pm@pm.org">toronto-pm@pm.org</a><br>http://mail.pm.org/mailman/listinfo/toronto-pm<br><br></blockquote></div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div>Tom Legrady</div><div><a href="mailto:tom@legrady.ca">tom@legrady.ca</a></div><div>My photo gallery ...&nbsp;<a href="http://picasaweb.google.com/legrady/"><font class="Apple-style-span" color="#FF0000"><span class="Apple-style-span" style="color: rgb(255, 0, 0); -webkit-text-decorations-in-effect: underline; ">http://picasaweb.google.com/legrady</span></font></a></div>Photo flipbook ...<a href="http://www.youtube.com/watch?v=E2n2yV5DL2U">http://www.youtube.com/watch?v=E2n2yV5DL2U</a></span></span></div></span> </div><br></div></body></html>