我的脚本太长了。如何将我的代码(程序子)拆分为多个Perl文件并告诉解释器理解它们?
有点像:
# -> main.pl
#include "foo.pl"
say_hello();
和
# -> foo.pl
sub say_hello {print "hello!"}
答案 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)
我想你可能在寻找do
? http://perldoc.perl.org/functions/do.html
答案 2 :(得分:0)
将其放在与您的班级相同的文件夹中,并将use ClassName
添加到调用文件的顶部。
另请查看Perl OOP教程。