From: Mark Wooding Date: Tue, 4 Aug 2015 16:10:44 +0000 (+0100) Subject: lib/Odin.pm: New function for parsing and checking integer arguments. X-Git-Url: https://git.distorted.org.uk/~mdw/odin-cgi/commitdiff_plain/fafab3ed4e7aff2275500662a3885a6b4d11f501?hp=c86aee467ae463cd3fc7ff896f09f2a07d79dad5 lib/Odin.pm: New function for parsing and checking integer arguments. --- diff --git a/lib/Odin.pm b/lib/Odin.pm index 7182af2..a89ba88 100644 --- a/lib/Odin.pm +++ b/lib/Odin.pm @@ -723,6 +723,19 @@ sub arg { return $a; } +sub intarg { + my ($me, $what, $min, $max) = @_; + $what //= "option `-$me->{opt}'"; + defined (my $a = $me->arg) or return undef; + if ($a !~ /^[-+]?\d+$/ || + (defined $min && $a < $min) || + (defined $max && $a > $max)) { + $me->err("invalid value `$a' for $what"); + $a = undef; + } + return $a; +} + sub rest { return @{$_[0]->{args}}; } sub ok { return $_[0]->{ok}; } sub bad { $_[0]->{ok} = 0; }