Deb wrote: > > Hi, Hello,
> Here's some (unfinished) code I am trying to use with Getopt::Std, > > #!/usr/local/bin/perl -w > # > use Getopt::Std; > use diagnostics; > getopts('hn:'); > > &usage if (defined $opt_h); > > sub usage { print <<"EOM" > USAGE: $0 [-h] -n [EMAIL PROTECTED] > > -h This message > -n <[EMAIL PROTECTED]> > > EOM > > When it's executed, as "test.pl -h" here is what I get in response: > > Name "main::opt_h" used only once: possible typo at test.pl line 16 (#1) > (W once) Typographical errors often show up as unique variable names. > If you had a good reason for having a unique name, then just mention it > again somehow to suppress the message. The our declaration is > provided for this purpose. > > USAGE: test.pl [-h] -n [EMAIL PROTECTED] > > -h This message > -n <[EMAIL PROTECTED]> > > The program is functional, but strict settings complain, right? No, you don't have strictures enabled (but you should have.) You are getting a warning because you have warnings enabled. You are using the $opt_h variable but you haven't declared it or assigned to it or used it anywhere else. Getopt::Std creates the $opt_h variable in a different namespace then your program. > So what do I do? I putting "my $opt_h" to initialize the variable, but then that > just > overwrites the setting from the commandline, as you might expect. > > What should I do to rid myself of the complaint? As far as I can tell, It's > used only once, and that's all I need. So, what am I missing? The best way is to enable strictures and use a lexical hash variable to hold the options: #!/usr/local/bin/perl -w # use strict; use Getopt::Std; use diagnostics; my %opt; getopts( 'hn:', \%opt ); usage() if exists $opt{ h }; The next best way is to enable stictures and use package variables: #!/usr/local/bin/perl -w # use strict; use Getopt::Std; use diagnostics; our ( $opt_h, $opt_n ); # on older Perls where our() isn't available # use vars qw( $opt_h, $opt_n ); getopts( 'hn:' ); usage() if defined $opt_h; > PS- I'm on the digest... Is that painful? BTW I'm on a couch. :-) John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]