in reply to stupid regex confusion

... btw, this does work:   qr/^.{0,1000}$/s my question is just why.

Because with the "s" modifier at the end of the regex, the wildcard "." (not within square brackets) will match anything including newlines.

As explained in the first reply, when you put "." inside square brackets as part of a character class, it loses its status as a wildcard, and will only match a literal period. If you wanted to insist on using a square-bracketed character class to match between 0 and 1000 characters, any of the following would work, but all of them would seem pretty goofy looking compared to the simpler version that simply uses "." as a wildcard with the "s" modifier.

# alternatives to qr/^.{0,1000}$/s : qr/^[\s\S]{0,1000}/; qr/^[\d\D]{0,1000}/; qr/^[\w\W]{0,1000}/;