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