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 "")