Una variable (escalar) puede contener (entre otras cosas) un número o una cadena.
Se podría hacer una prueba con una expresión regular para comprobar si es un número, pero es mejor preguntarle a Perl qué es lo que la variable está almacenando.
En el módulo
Scalar::Util hay una función llamada looks_like_number(), que devuelve verdadero si la variable contiene algo que "parece" un número.
El problema es si contiene cualquier otra cosa...
El módulo
Data::Types te permite distinguir si lo que contiene una variable es un número, un número natural, un número entero, un número decimal, un número real, un número en punto flotante o una cadena de caracteres.
Hay más opciones, desde luego. Depende de lo que estés buscando.
En
perlfaq4 tienes un ejemplo con expresiones regulares.