Ответ 1
Это известная идиома для ограничения объема. Это обсуждается в fooobar.com/questions/157516/... ff. и http://use.perl.org/comments.pl?sid=43991&cid=70918 ff.
Несколько лет назад я принял следующий "шаблон" для всех, кроме самого простого из моих сценариев Perl: (я даже не помню, где я его видел в первую очередь, это, конечно, не моя настоящая идея).
use strict;
...
sub main {
...
}
... possibly more subs ...
... at the end of the file:
#############
# Call main #
&main();
#############
Есть ли какая-то польза от этого? Я нахожу код немного чище, но в остальном я не уверен, что у него есть другая цель, чтобы сделать программиста C во мне счастливым: -)
Любые идеи экспертов Perl и опытных пользователей оценены. (Я, конечно же, не знаю)
Это известная идиома для ограничения объема. Это обсуждается в fooobar.com/questions/157516/... ff. и http://use.perl.org/comments.pl?sid=43991&cid=70918 ff.
Он предоставляет возможность избежать случайного использования неверных переменных в подсистемах. { ... }
также сделал бы это, но с помощью вспомогательного устройства основной код будет помещен в верхнюю часть файла, в то же время выполнив другой код инициализации в файле.
Лично я использовал
{
... # Extract command line switches from @ARGV
... # Perform input validation
exit(main(@ARGV));
}
Benefit? Нет, если вам не нужно повторно использовать основную часть. В некоторых случаях это, возможно, облегчит читаемость, но я сомневаюсь.
Другое дело, что такие команды, как:
my $arg = shift;
Будет влиять на @_
вместо @ARGV
, а @ARGV
не будет автоматически передаваться на main()
. @ARGV
все еще будет видимым внутри суб, но вам придется явно его переместить shift @ARGV
.
Одним из преимуществ может быть то, что упростить превращение вашей программы в modulino.
Сделав много Perl, я бы сказал, что это просто то, что делает вас счастливыми. Я сомневаюсь, что это будет быстрее или медленнее.
Чтобы сделать мой ответ несколько полезным, я укажу, что вам не нужен &
для вашего подзаголовка. &
делает @_
видимым для sub, но пустые парны отрицают это.