Several problems. First, <=> is a three-state operator. It has different return values for less than comparisons, greater than, and equal to. It's primarily used for numeric comparisons in sort routines. You should be using !=
The next problem is that you cannot chain 1||2||3||4||5 like that. That's like saying "If $expire is not equal to 1, or if two, or if three, or if four, etc." In other words, the comparison only binds to $expire != 1.
To write that correctly, the way you're trying to test, it would be:
if( $expire != 1 or $expire != 2 or $expire != 3...... )
...and so on. But how about this instead?
if( $expire != int $expire or $expire < 1 or $expire > 14 ) { die "Don't tamper with me!\n"; }
You could also do it like this, using a hash slice:
my %test; @test{ 1 .. 14 } = (); unless( exists $test{$expire} ) { die "Don't tamper with me!\n"; }
In all my examples, I've assumed that you want to reject non-integers.
Dave
In reply to Re: IF Statement Testing
by davido
in thread IF Statement Testing
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |