$Problem =~ /(\d+) # one or more digits \s* # zero or more whitespace ([-+\/*]) # operator (1 char only) \s* # zero or more whitespace (\d+)/x; # one or more digits my $Number1 = $1; my $Number2 = $3; my $Operator = $2; my $Answer; my $Code = "$1 $2 $3"; # we're confident this is safe $Answer = eval "$Code";