|Keep It Simple, Stupid|
There are a couple of problems with the code you have.
First, any white space or punctuation will be considered to be numeric - I somehow don't think that is what you want. This can be fixed by adding an elsif clause with a condition of $string =~ /^\d+$/. Of course, then you have to decide if white space and punctuation are valid inputs are not.
Second, consider the strings "a2" and "2a" - both will be considered Alphabet but your code. There is at least one character in each string thus the match succeeds. You want to anchor the match, something like $string =~ /^[a-zA-Z]+$/.
Third, are you sure that you want to use $a as a variable name. It has the same name as the built in sort variable and you did make it a my variable but to save yourself possible future bugs I would recommend against using $a (and $b) as temporary variables names.
The tests would probably look something like
Depending on the source of the data you may also need to use chomp on the variable to get rid of any trailing newlines.
Edit: chipmunk 2001-03-22