如果子程序与我的main函数在同一目录中,我该如何调用它?

时间:2014-07-10 20:18:55

标签: perl call subroutine

好吧我正在改写这个以详细说明。我对Perl& amp;编程所以请耐心等待。基本上,我想知道当它们来自同一目录时,如何在主.pl文件中运行一个或多个文件(我猜模块?)。我的代码可以很好地将它们全部作为子程序插入到我的文件底部,但如果我将子程序拉出并将它们转换为模块则不行。

2 个答案:

答案 0 :(得分:1)

这里有几个步骤可以帮助您入门。这会将一些子导出到包MyModule

首先在与主程序相同的目录中创建MyModule.pm。例如:

package MyModule;
use warnings; use strict;

sub foo {
    my $p = shift;
    print "foo called with param: $p\n";
    bar();
}

sub bar {
    print "bar called\n";
}

1; # don't delete this line

然后从主程序加载并调用此包中的subs:

#/usr/bin/perl                                                                                                                                            
use warnings; use strict;

use File::Basename qw(dirname);
use lib dirname(__FILE__); # prepend source directory to the include path                                                                                 

use MyModule;

MyModule::foo(42);

语句use lib dirname(__FILE__)正在将主程序的源目录添加到模块包含路径。

答案 1 :(得分:1)

我有一个库文件,里面装满了我制作的所有子程序,我称之为util.pl.让我们说它在$ HOME / perl / lib / util.pl中。

现在我在$ HOME / perl / project1 / myscript.pl

中有一个perl脚本

在myscript.pl中,在顶部我输入:require'$ HOME / perl / lib / util.pl';

现在我可以在myscript.pl中调用util.pl中的任何子例程。例如,undupespace()在util.pl中。在myscript.pl中我可以称之为:$ s = undupespace($ s);

安装模块后,我把它放在myscript.pl的顶部:使用File :: Copy;

这就是你想要的OP吗?