in reply to Detecting an undefined hash key
Although the Getopt::Std documentation doesn't seem to mention it, -t and -s are special. Consider:
use strict; use warnings; use Getopt::Std; use Data::Dump::Streamer; testSwitches (qw(-p -q)); testSwitches (qw(-s)); testSwitches (qw(-t)); testSwitches (qw(-s -t)); testSwitches (qw(-p)); sub testSwitches { local @ARGV = @_; my %opt; my $test; print join (' ', @ARGV), "\n"; getopt ('st', \%opt); Dump \%opt; print "\n"; }
Prints:
-p -q $HASH1 = { p => 1, q => 1 }; -s $HASH1 = { s => undef }; -t $HASH1 = { t => undef }; -s -t $HASH1 = { s => '-t' }; -p $HASH1 = { p => 1 };
Is this some sort of *nix convention perhaps?
Note that you could use exists for your test instead of defined. You could also reduce the number of parenthesis to make the code more readable:
if (! exists $opt{s} and ! exists $opt{t}) {
Update: Struck silliness. Left code as a nice template for playing with/testing/demonstrating option processing.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Detecting an undefined hash key
by JavaFan (Canon) on Oct 01, 2008 at 11:36 UTC | |
by GrandFather (Saint) on Oct 01, 2008 at 19:05 UTC |