/perl/lib/perl/site/lib.“.”这个目录表示当前的工作目录。核心模块是安装在perl/lib目录中,非核心模块安装在perl/site/lib目录中。你可以向@INC中添加自定义目录。像下面这样:
BEGIN{push@INC,'/my/dir'}#orBEGIN{unshift@INC,'/my/dir'}#oruselib'/my/dir';我们需要使用BEGIN块在编译时向@INC中添加值,此时是perl检查模块的时刻。
如果你等到程序被编译的时候就太晚了,perl会抛出一个异常,说“在@INC中无法找到MyModule”.使用push还是unshift方法添加值的区别是,perl搜索@INC的顺序是从@INC中的第一个目录开始的。如果你在/perl/lib/、/perl/site/lib/和./中都有一个MyModule模块的话,那么/perl/lib中的模块将首先被找到并使用。uselib用法可以起到和BEGIN{unshift@INC,$dir}一样的效果-请参看"perlman:lib:lib":http://www.perlmonks.org/?node=perlman:lib:lib.*useFoo::Bar意味着什么*useFoo::Bar并不意味着在@INC的目录中寻找一个叫做Foo::Bar.pm的模块文件。它的意思是在@INC的目录中寻找一个叫做‘Foo’的“子目录”,然后在其中找一个叫做“Bar.pm”的“模块”。现在,如果我们成功"use"了一个模块,那么我们就可以通过完整的包路径语法&PACKAGE::FUNCTION使用这个模块中的所有函数。当我们说&Foo::Bar::some_func的时候,我们指的是“包的名字”而不是那个在use中曾使用的包含路径的文件名。这会允许你可以在一个use过的文件中包含很多包名字。实际使用中这些名字通常是相同的。
usewarnings;
你应该打开warnings来检测你的模块,因为它可以检测出很多细微的错误。你可以通过在测试模块代码中添加-w参数来打开警告选项。如果你在模块中添加了usewarnings,那么你的模块必须要求运行在perl5.6以上,否则不支持。如果你在模块的顶端添加了$^W ,那么你将会在全局范围内打开警告选项-这将影响到其他模块,你最好只在你自己的程序中这么使用,因为这略显霸道了一些。这有一个专家写的叫做"tye":http://www.perlmonks.org/?node=tye的代码来测试警告选项,但没有直接将它包含进他/她自己的模块中。希望这些会讲清楚它是怎样工作的。:)tachyon
共2页 第1页 第2页






