hippo already pointed you to Scalar::Util's looks_like_number, which provides access to Perl's internal string-to-number conversion. kcott pointed out some of the potential pitfalls of that function, and just to add one more: for reasons, the string "0 but true" will also cause looks_like_number to return true, and it allows leading and trailing whitespace. Another thing to consider is for example whether you want to allow leading zeros, for example, some users may expect "077" to represent the integer 63 in octal, while others might simply expect this to be the integer 77 (the latter probably being more common among non-coders).
I just wanted to add that this is of course also a FAQ: How do I determine whether a scalar is a number/whole/integer/float? and that Regexp::Common::number provides more control over what strings you want to allow as numbers.