Подтвердить что ты не робот

Разница между & function и функцией() в perl

Возможный дубликат:
Когда мне следует использовать и для вызова подпрограммы Perl?

В perl-скриптах, почему этот метод вызова функции записывается по-разному несколько раз. Я вижу & функцию, а иногда функцию(). Они оба одинаковые, и это всего лишь стиль, который хотелось бы выставлять напоказ? Если они одинаковы, то почему они оба доступны, разве это не достаточно? Я предполагаю, что существует определенная смысловая разница между методами, которые отличает их друг от друга... но при каких обстоятельствах?

--- Так как я не могу ответить на свой вопрос по причинам таймаута - я обновляю ответ в разделе самого вопроса. Когда у меня появится возможность обновить блок ответа, я поставлю его там.

Я нашел соответствующий текст в книге "Изучение Perl". Тем не менее, для подсказки. Глава 4: Подпрограммы - Опущение Амперсанда.

Меня больше интересовал амперсанд и использование perl-функций. Если перед вызовом уже определена подпрограмма, тогда подпрограмма может быть вызвана без использования & при вызове функции, аналогичной вызову встроенных функций. и также используется для различения встроенных функций и определенных пользователем функций, если вызываемая функция использует то же имя, что и для одной из встроенных функций, если она определена до вызова.

Использование(), просто для оправдания передачи аргументов подпрограммам, а если не используется, список текущих аргументов по умолчанию передается в форме @_. Если аргументы указаны в() для подпрограммы, предполагается, что она является подпрограммой и вызывается, даже если она еще не определена при разборе.

4b9b3361

Ответ 1

Он имеет очень специфическое использование:

  • & указывает Perl игнорировать подпрограмму.
  • & может позволить вам использовать вызывающего абонента @_. (&foo; без парнов или аргументов).
  • goto &foo; и defined &foo.
  • Получение ссылки (например, \&foo).

Некоторые люди (в основном, новички) используют его, чтобы отличать пользовательские подсистемы от встроенных функций, поскольку встроенным функциям не может предшествовать &.