While your first two points are correct, I'm afraid I must point out that your third point is incorrect.
is mostly certainly a regular expression match, with the expression "pattern" being applied to the variable $foo. The =~ operator will accept anything that may be stringified as it's right hand side, which is really what a regex is, // are just fancy quotes that have slightly different semantics.