Как я могу запустить свой Perl-скрипт, только если он не был загружен с помощью require? - PullRequest
2 голосов
/ 23 октября 2010

У меня есть скрипт на Perl.Если он был вызван напрямую из командной строки, я хочу запустить sub main.

Если он был вызван с помощью require, я ничего не хочу делать и ждать, пока скрипт вызова не вызовет sub job на досуге.

Ответы [ 3 ]

1 голос
/ 23 октября 2010

Существует рекомендуемое решение Perl для кода, который должен запускаться из скрипта, а также из модуля perl.

Обычно его называют «modulino», который можно использовать как поисковый запрос Google или SO для поиска инструкций.

Вот одна инструкция с ссылками:

Скрипт Perl, используемый как программа и как модуль

1 голос
/ 24 октября 2010

Вы можете сделать что-то вроде этого:

#!/usr/bin/env perl
package Some::Module;

sub job { ... }

sub main { ... } 

if (!caller) {
     main(@ARGV);
}

1;
__END__

=head1 NAME

Some::Module - program, podpage, and module

....

Теперь это может быть одновременно все:

  1. исполняемый скрипт, который вызывается из командной строки какпрограмма (которая будет вызывать свою main() функцию)

  2. модуль для use из другого места, в этом случае она просто загружает определения функций

  3. страница подкаста, которую вы можете запустить pod2text на

Это то, что вы искали?

1 голос
/ 23 октября 2010

Звучит так, как будто вы должны разбивать свой скрипт на модуль и интерфейсную программу.Тогда программы, которые хотят использовать эту функциональность, могут загрузить модуль, используя use (или require, если вы настаиваете), и программа-заглушка может сделать это, а также вызвать подпрограмму job.

...