I've reserved 0 as a non-match for a pattern in a sub, so that's the reason why it's not declared.
That's not a good reason.

Are you saying that I should avoid declaring bounds like this:
No, that part's fine (but that's not a declaration, those are iteration limits).