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

Какая польза имеет "sub main... & main()"; подход (суб-основной шаблон) в Perl?

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

use strict;
...
sub main {
  ...
}
... possibly more subs ...

... at the end of the file:
#############
# Call main #
&main();
#############

Есть ли какая-то польза от этого? Я нахожу код немного чище, но в остальном я не уверен, что у него есть другая цель, чтобы сделать программиста C во мне счастливым: -)

Любые идеи экспертов Perl и опытных пользователей оценены. (Я, конечно же, не знаю)

4b9b3361

Ответ 2

Он предоставляет возможность избежать случайного использования неверных переменных в подсистемах. { ... } также сделал бы это, но с помощью вспомогательного устройства основной код будет помещен в верхнюю часть файла, в то же время выполнив другой код инициализации в файле.

Лично я использовал

{
   ...  # Extract command line switches from @ARGV
   ...  # Perform input validation
   exit(main(@ARGV));
}

Ответ 3

Benefit? Нет, если вам не нужно повторно использовать основную часть. В некоторых случаях это, возможно, облегчит читаемость, но я сомневаюсь.

Другое дело, что такие команды, как:

my $arg = shift;

Будет влиять на @_ вместо @ARGV, а @ARGV не будет автоматически передаваться на main(). @ARGV все еще будет видимым внутри суб, но вам придется явно его переместить shift @ARGV.

Ответ 4

Одним из преимуществ может быть то, что упростить превращение вашей программы в modulino.

Ответ 5

Сделав много Perl, я бы сказал, что это просто то, что делает вас счастливыми. Я сомневаюсь, что это будет быстрее или медленнее.

Чтобы сделать мой ответ несколько полезным, я укажу, что вам не нужен & для вашего подзаголовка. & делает @_ видимым для sub, но пустые парны отрицают это.