Not sure where you got that regexp from but it's either a typographical error or just wrong. The first '[' is doing nothing unless it's literally part of the search pattern. It's also not tied to the beginning of the string. The '^' is the beginning of string anchor but not when it is inside of a character class: []. When it's inside the character class it means to not match what's in the character class (a negated character class). Maybe it was supposed to be:
/^[^TMC]ow/
in which case it means to match a string that begins with any character followed by 'ow' but not if the character is T or M or C:
my @strings = ('Cows say moo', 'I Mow the grass', 'Tow the line', 'Bow tie', 'Pow wow', '9ow begins with a digit', ' ow begins with a space');
for (@strings) {
/^[^TMC]ow/ && print "$_\n";
}
prints:
Bow tie
Pow wow
9ow begins with a digit
ow begins with a space