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

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

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

Ответ 1

Рекомендуемое решение Perl для кода, которое должно быть запущено из script, а также для модуля perl.

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

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

Perl script можно использовать как программу и как модуль

Ответ 2

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

Ответ 3

Вы могли бы что-то вроде этого:

#!/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

....

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

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

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

  • podpage, вы можете запустить pod2text на

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