($txt = '123abc') =~ /(a|b|c)/;
1. ^123abc - check for a -> fail
- check for b -> fail
- check for c -> fail
2. 1^23abc - check for a -> fail
- check for b -> fail
- check for c -> fail
3. 12^3abc - check for a -> fail
- check for b -> fail
- check for c -> fail
4. 123^abc - check for a -> succeess, $1 becomes 'a'
####
($txt = 'barefoot') =~ /(foo|foot)/;
1. ^barefoot - check for foo -> fail
- check for foot -> fail
2. b^arefoot - check for foo -> fail
- check for foot -> fail
3. ba^refoot - check for foo -> fail
- check for foot -> fail
4. bar^efoot - check for foo -> fail
- check for foot -> fail
5. bare^foot - check for foo -> success, $1 becomes 'foo'
##
##
($txt = 'arvec') =~ /(ar|ec|vec)$/
1. ^arvec - check for ar$ -> fail (because of the end-of-string anchor)
- check for ec$ -> fail
- check for vec$ -> fail
2. a^rvec - check for ar$ -> fail
- check for ec$ -> fail
- check for vec$ -> fail
3. ar^vec - check for ar$ -> fail
- check for ec$ -> fail
- check for vec$ -> success, $1 becomes 'vec'