in reply to anchor ^ and \G

What happened when you tried it?

You did try it, didn't you? Or is that why you didn't tell us the actual results of your code snippet?

And did you read http://perldoc.perl.org/perlre.html (search for "metacharacters")?

"In particular the following metacharacters have their standard egrep-ish meanings: \ Quote the next metacharacter ^ Match the beginning of the line ... By default, the "^" character is guaranteed to match only the beginning of the string..."
and, from http://perldoc.perl.org/perlre.html ({search for "Assertions"):
\G Match only at pos() (e.g. at the end-of-match position of prior m//g) .... The \G assertion can be used to chain global matches (using m//g), as described in Regexp Quote-Like Operators in perlop. It is also useful when writing lex -like scanners, when you have several patterns that you want to match against consequent substrings of your string; see the previous reference. The actual location where \G will match can also be influenced by using pos() as an lvalue: see pos.

But, as the docs make clear, the caret limits the regex engine's attempts to match your expression, unless that matches at the beginning of the string.

You need to read the docs (and understand them! THEN, if you don't understand something, come back with code that reflects info from the docs and tell us how the output doesn't match your understanding of what you've studied.