我的腳本變得太長了。我如何將我的代碼(過程子)分割成多個Perl文件並告訴解釋者理解它們?如何將我的Perl代碼分割成多個文件?
有點像:
# -> main.pl
#include "foo.pl"
say_hello();
和:
# -> foo.pl
sub say_hello {print "hello!"}
我的腳本變得太長了。我如何將我的代碼(過程子)分割成多個Perl文件並告訴解釋者理解它們?如何將我的Perl代碼分割成多個文件?
有點像:
# -> main.pl
#include "foo.pl"
say_hello();
和:
# -> foo.pl
sub say_hello {print "hello!"}
你想要做的是創建一個或多個模塊。首先看看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!"}
我想你可能會尋找do
? http://perldoc.perl.org/functions/do.html
將它放在與您的課程相同的文件夾中,並將use ClassName
添加到調用文件的頂部。
另請查看Perl OOP教程。
`do`不分裂腳本幫助成多個文件。 – reinierpost 2010-12-06 10:14:15