Сигнатуры методов были добавлены в Perl еще в версии 5.20(2014), но они носили экспериментальный характер и требовали специальную прагму use feature 'signatures';. И только в версии 5.36(2022) они стали включаться при указании версии прагмой use v5.36; . Таким образом для любого нового кода, который использует perl не ниже этой версии, можно использовать синтаксис для указания параметров методов.

Как было раньше:

sub foo {
    die "Too many arguments for subroutine" unless @_ <= 2;
    die "Too few arguments for subroutine" unless @_ >= 2;
    my $left = $_[0];
    my $right = $_[1];
    return $left + $right;
}

Как можно теперь:

sub foo ($left, $right) {
    return $left + $right;
}

Если нужно переменное число аргументов или именованые аргументы:

sub foo ($filter, @inputs)
sub foo ($filter, %inputs)

Можно задавать значения по-умолчанию:

sub get_gid ($left, $right = 1000) {
    return $left + $right;
}

Начиная с версии 5.38 можно явно задавать дефолтные значения для пропущенных аргументов:

sub print2 ($string //= 'debug')

и для переданных аргументов со значением false:

sub print2 ($string ||= 'none')