usually, ^ does mean at the beginning, but the [ and ] make a character class, and a ^ at the beginning of a character class means "not any of these".
Update:
Oddly enough, it doesn't explicitly say that in perlre. however, it does say
You can negate the [::] character classes by prefixing the class name with a '^'. This is a Perl extension.