Нет: указанные аргументы будут означать «любое количество аргументов, 0 или больше». Это означает, что в ваших первоначальных примерах /foo/bar
и /foo/bar/baz
являются совпадениями. Элементы пути после регулярного выражения, которым само регулярное выражение не соответствует, будут съедены в качестве аргументов действия.
(Люди, которые рассказывают вам что-то о вашем регулярном выражении и говорят «Я не знаю Catalyst, но», упускают здесь момент, когда $ в сопоставителе регулярного выражения может совпадать непосредственно перед символом «/», а не всегда в конце URL, в Catalyst. Остальное затем используется в качестве аргументов.)
Вам потребуется :Args(0)
для того, что вы пытаетесь достичь, указав, что 0 частей пути должны использоваться в качестве аргументов (поэтому /foo/bar
не соответствует).
Тем не менее, быстрый тест с использованием
sub match :LocalRegex('^[a-z]+$') :Args(0)
показывает, что /foo
и /foo/
оба совпадают (но это на шаг ближе: /match/xyz
нет). Catalyst обрабатывает '/' специально в путях, поэтому я не уверен, что вы можете сделать лучше, чем это.