my($variable) = "some string" =~ /(e\s*str)/;
This works because
If the
/goption is not used,m//in list context returns a list consisting of the subexpressions matched by the parentheses in the pattern, i.e., ($1,$2,$3…).
and because my($variable) = ... (note the parentheses around the scalar) supplies list context to the match.
If the pattern fails to match, $variable gets the undefined value.