Как я включаю функции из другого файла в моем сценарии Perl?

Из альтернатив Бесплатного программного обеспечения они еще не были упомянуты:

  • Связь
  • Rekall (не уверенный в состоянии версии Windows в настоящее время, хотя)
  • Glom (разрабатываемая версия Windows )

я также следил бы за тем, какие инструменты DB RAD сообщество Flex/воздуха придумывает, с тех пор с теми инструментами возможно получить объединенный рабочий стол и веб-интерфейсы.

66
задан Chankey Pathak 3 January 2013 в 06:49
поделиться

6 ответов

Используйте модуль. Посмотрите perldoc perlmod и Exporter .

В файле Foo.pm

package Foo;
use strict;
use warnings;
use Exporter;

our @ISA= qw( Exporter );

# these CAN be exported.
our @EXPORT_OK = qw( export_me export_me_too );

# these are exported by default.
our @EXPORT = qw( export_me );

sub export_me {
    # stuff
}

sub export_me_too {
    # stuff
}

1;

В вашей основной программе:

use strict;
use warnings;

use Foo;  # import default list of items.

export_me( 1 );

Или чтобы получить обе функции:

use strict;
use warnings;

use Foo qw( export_me export_me_too );  # import listed items

export_me( 1 );
export_me_too( 1 );

Вы также можете импортировать переменные пакета, но такая практика настоятельно не рекомендуется.

67
ответ дан 24 November 2019 в 14:56
поделиться

Perl require will do the job. You will need to ensure that any 'require'd files return truth by adding

1;

at the end of the file.

Here's a tiny sample:

$ cat m1.pl 
use strict;
sub x { warn "aard"; }
1;

$ cat m2.pl 
use strict;
require "m1.pl";
x();

$ perl m2.pl 
aard at m1.pl line 2.

But migrate to modules as soon as you can.

EDIT

A few benefits of migrating code from scripts to modules:

  • Without packages, everything occupies a single namespace, so you may hit a situation where two functions from separate files want the same name.
  • A package allows you to expose some functions, but hide others. With no packages, all functions are visible.
  • Files included with require are only loaded at run time, whereas packages loaded with use are subject to earlier compile-time checks.
47
ответ дан 24 November 2019 в 14:56
поделиться

Я полагаю, вы ищете требовать или использовать ключевые слова.

8
ответ дан 24 November 2019 в 14:56
поделиться

Вам действительно следует изучить модули Perl, однако для быстрого взлома вы всегда можете запустить "perl -P", который запускает ваш сценарий Perl через препроцессор C. Это означает, что вы можете использовать #include и друзья ....

Только быстрый взлом, будьте осторожны; -)

4
ответ дан 24 November 2019 в 14:56
поделиться

То, что вы ищете, это 'require file.pl', но вам следует обратить внимание на «модуль использования».

4
ответ дан 24 November 2019 в 14:56
поделиться

Кроме того, do 'file.pl'; будет работать, но модули - лучшее решение.

7
ответ дан 24 November 2019 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: