use strict; use warnings; use Scalar::Util qw( looks_like_number ); # ..... if( $temp =~ m/^([0-9.+-]+)\s*([cf])/i and looks_like_number( $1 ) ) { my( $number, $system ) = ( $1, lc $2 ); # Do whatever you want here; # $number contains the temp, # and $system contains 'c' or 'f'. } else { die "Invalid number format."; }