Я недавно читал о Perl и немного озадачен тем, как Perl обрабатывает аргументы, переданные подпрограммам.
В языке, таком как Python, Java или PHP, определение функции принимает форму (в псевдокоде):
function myFunc(arg1, arg2) {
// Do something with arg1 and arg2 here
}
Однако в Perl это просто:
sub mySub {
# @_ holds all arguments passed
}
И как я понимаю, это единственный способ сделать это.
-
Что делать, если я хочу ограничить вызывающий объект только двумя аргументами?
-
Разве это не просто Perl, не допускающий ничего, кроме аргументов с переменным числом на других языках (например, Python, C и т.д.)?
-
Разве это не проблема в какой-то момент?
-
Как насчет всех проверочных параметров аргументов по умолчанию на других языках? Нужно ли это делать прямо в Perl? Например,
sub a_sub { if (@_ == 2) { # Continue function } else { return false } }