如何在多个文件中拆分Perl代码?

时间:2010-12-06 06:44:36

标签: perl perl5

我的脚本太长了。如何将我的代码(程序子)拆分为多个Perl文件并告诉解释器理解它们?

有点像:

# -> main.pl

#include "foo.pl"
say_hello();

# -> foo.pl
sub say_hello {print "hello!"}

3 个答案:

答案 0 :(得分:19)

您要做的是创建一个或多个模块。首先查看perlmod,尤其是Perl Modules section

由于您说您正在编写过程代码,因此您需要从模块中导出函数。传统的方法是使用Exporter(Perl附带),尽管Sub::Exporter是一个较新的CPAN模块,允许一些不错的东西。 (有关导出函数的介绍,另请参阅其Sub::Exporter::Tutorial。)

模块可以放在@INC变量中列出的任何目录中。尝试perl -V获取列表。您还可以使用lib在运行时添加目录。一个技巧是使用FindBin模块查找脚本的位置,然后添加相对于该目录的目录:

use FindBin;                  # Suppose my script is /home/foo/bin/main.pl
use lib "$FindBin::Bin/lib";  # Add /home/foo/bin/lib to search path

您的示例代码,转换为模块:
在main.pl中:

#! /usr/bin/perl
use strict;
use warnings;
use Foo;
say_hello();

在Foo.pm:

package Foo;

use strict;
use warnings;
use Exporter 'import';
our $VERSION = '1.00';
our @EXPORT  = qw(say_hello);

sub say_hello {print "hello!"}

答案 1 :(得分:2)

我想你可能在寻找dohttp://perldoc.perl.org/functions/do.html

答案 2 :(得分:0)

将其放在与您的班级相同的文件夹中,并将use ClassName添加到调用文件的顶部。

另请查看Perl OOP教程。