perl 参数的 i 和 I 都可以指定路径
其中 I 指定的是文件夹
i 指定的是 pm 文件
比如 /Test 文件夹下有 Teacher.pl 和 Boy.pm 两个文件
../
./
|-Test/
|-Boy.pm
|-Teacher.pl
其中 Teacher.pl 调用 Boy.pm 代码
代码如下:
#!/cygdrive/c/Perl/bin/perl
package Test::Teacher;
use strict;
use warnings;
use Test::Boy;
my @eth = Test::Boy::getEverything();
foreach(@eth){
print "out: ".$_."\n";
}
#!/cygdrive/c/Perl/bin/perl
package Test::Boy;
use strict;
use warnings;
my @everything = 1 .. 9;
sub getEverything{
@everything;
}
1 假设当前路径为 /cygdrive/e/pl 时可以使用
perl Test/Teacher.pl
注:perl 会从 ./ 下寻找 Test::Boy.pm,也就是相当于 -iTest::Boy 参数
2 假设当前路径为 /cygdrive/e/pl/Test 时
则需要使用
perl -I../ Teacher.pl
注:perl 会从 ../ 寻找 Test::Boy.pm
use Foo::Bar 意味着什么
——摘自 http://wiki.perlchina.org/Simple_module_tutorial
use Foo::Bar
并不意味着在 @INC 的目录中寻找一个叫做Foo::Bar.pm的模块文件。
它的意思是在@INC的目录中寻找一个叫做‘Foo’的“子目录”,
然后在其中找一个叫做“Bar.pm”的“模块”。
现在,如果我们成功"use"了一个模块,
那么我们就可以通过完整的包路径语法
&PACKAGE::FUNCTION
使用这个模块中的所有函数。
当我们说&Foo::Bar::some_func的时候,
我们指的是“包的名字”而不是那个在use中曾使用的包含路径的文件名。
这会允许你可以在一个use过的文件中包含很多包名字。
实际使用中这些名字通常是相同的。
另外,假设 Teacher.pl 在 Test 文件夹同级
../
./
|test/
| |-Boy.pm
|-Teacher.pl
如果要调用 Boy.pm,也要在 Boy.pm 开头的 package 生命中写清
Test::Boy
即:pm 一定要放在 pm 内与包路径相同的文件夹下,并在文件夹外层调用
没有评论:
发表评论