Hello, All:
I'm testing to determine that a list of variables has been set and
am baffled by how this conditional is evaluating:
CODE SNIPPET:
GetOptions(
'comment=s' => \$comment, # Req'd arg
'directory=s' => \$directory, # Req'd arg
'rows=i' => \$max_rows, # Req'd arg
'cols=i' => \$max_cols, # Req'd arg
'saturation:i' => \$saturation # Optional arg
);
unless (defined $directory && defined $comment && defined $max_rows &&
defined $max_cols && (!defined $saturation || abs($saturation) < 100)) {
# Print error messages
}
WHAT'S HAPPENING:
Without setting $saturation...
A. Everything works just fine if all of the *required* variables are set.
B. Perl complains 'Use of uninitialized value in abs' if any of the
*required* variables are not set.
WHAT I EXPECT TO HAPPEN:
Without setting $saturation...
I thought that evaluation of the conditional would stop at the first
occurence of an undefined variable and that (!$defined $saturation ||
abs($saturation) < 100) would _not_ be evaluated i.e., The abs()
portion of the test would not be performed.
HOW CAN I:
1. Check that each of the required variables has been set *and*then*
2. Check the value of $saturation _only_if_it_has_been_set_?
--
Eric Pretorious
Sunnyvale, CA
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]