in reply to Is this normal
You're making two mistakes:
- You're calling the match in list context, so an empty list is returned, reducing the number of passed parameters.
- Even when called in scalar context, a non-match does not return 0. It returns the empty string (most Perl build-ins that return either a true or a false value, return 1 or "")