On Tuesday 11 December 2007 16:53, protoplasm wrote:
>
> I'm messing around with Getopt and have a set of arguments that can
> be passed to the program. I am new to perl and am unaware of how to
> resolve the error while keeping 'use warnings;' enabled. Any help
> would be greatly appreciated.
>
> Code:
>
> ==============================================
> #!/opt/local/bin/perl
>
> use Getopt::Long;
>
> #use diagnostics;
> use strict;
> use warnings;
>
> my $opts_hash;
> my %opts_hash = ();
>
> if (@ARGV < 1)
> {
> print "argv is less than 1!\n";
> print "Exiting...\n";
> exit;
> }
>
> GetOptions( 'all' => \$opts_hash{allTests},
> 'CbcDec' => \$opts_hash{CbcDec}, 'CbcEnc' => \$opts_hash{CbcEnc},
> 'CfbDec' => \$opts_hash{CfbDec}, 'CfbEnc' => \$opts_hash{CfbEnc},
> 'CtrDec' => \$opts_hash{CtrDec}, 'CtrEnc' => \$opts_hash{CtrEnc},
> 'EcbDec' => \$opts_hash{EcbDec}, 'EcbEnc' => \$opts_hash{EcbEnc},
> 'OfbDec' => \$opts_hash{OfbDec}, 'OfbEnc' => \$opts_hash{OfbEnc},
> 'Sha1Test' => \$opts_hash{Sha1Test}
> );
Perl will autovivify the hash keys because you are passing the hash
value references to GetOptions. An alternative way that will not
autovivify all the keys is:
GetOptions( \my %opts_hash,
'allTests', 'CbcDec', 'CbcEnc', 'CfbDec', 'CfbEnc', 'CtrDec',
'CtrEnc', 'EcbDec', 'EcbEnc', 'OfbDec', 'OfbEnc', 'Sha1Test' );
> foreach (keys %opts_hash)
> {
> if ( $opts_hash{$_} == 0 )
perldoc -f defined
> {
> next;
> }
> elsif ( $opts_hash{$_} == 1 )
> {
> print "$_ = $opts_hash{$_}\n";
> }
> }
> ==============================================
>
> naiad:~/workspace $ ./debug2.pl --CbcDec
> Use of uninitialized value in numeric eq (==) at ./debug2.pl line 32.
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/