So I'm trying to set up a subroutine to test input types to make sure they're
the right sort (numeric, etc) I figure regex is the way to go, but it doesn't
seem to work. The script:

#!perl
print input_test('a', 'numeric'), "\n";
sub input_test {
        my ($input, $test_type, $output) = ($_[0], $_[1], $_[0]);
        if      ($test_type eq 'numeric' and not $input =~ m/^\d*$/) { # numeric *and*
non-decimal
                $ouptput = 'Non-numeric input';
        } elsif ($test_type eq 'decimal' and not $input =~ m/^(\d|\.)*$/) { # doesn't
test for multiple decimals
                $ouptput = 'Non-decimal input';
        } else {
                $output = 'Bad &Numbers::input_test() input';
        }
        return $output;
}
__END__

prints 'a', same thing if $test_type is 'decimal'. In fact the only thing that
seems to work is if $test_type is wrong. I've tried rewriting the syntax a bit
(embedded if loops, using \D instead of \d...) but it comes out the same. What's
up?

~wren

Reply via email to