use Scalar::Util 'looks_like_number'; if ( looks_like_number( $foo ) && $foo =~ /^\??$/ ) {...}