|
require 可以导入 Perl 库,然后便可执行其中的例程或代码,它类似于 C 语言中的 #include 。
标准 Perl 库提供了许多 Perl 4 时编写的许多 .pl 库,它们由包含在其中的子例程组成,比如你可以查看 /usr/share/perl5/pwd.pl 这个文件,该文件包含了两个子例程,其中一个用来切换工作目录。
使用 require 的有的格式为:require EXPR 。也可以不带参数,此时该函数导入的就是 $_ 变量值。require 导入的库文件要存在于 所包含的某个路径之中,否则函数将执行失败,并返回类似于下面的信息:$ ./require.pl
Can't locate hello.pl in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at ./require.pl line 3.
测试代码:
[code=perl]#!/usr/bin/perl
require "pwd.pl";
require "ctime.pl";
&initpwd; #初始化函数,位于 pwd.pl 中
printf "The present working directory is %s\n", $ENV{PWD};
&chdir ("../.."); #切换目录,该函数位于 pwd.pl 中
printf "The present working directory is %s\n", $ENV{PWD};
$today = &ctime(time); #获取时间,该函数位于 ctime.pl 中
print "$today";[/mw_shl_code]
运行输出:$ ./require.pl
The present working directory is /home/beyes/perl/package
The present working directory is /home/beyes
如果打开 pwd.pl 或 ctime.pl 这样的库文件时,可能会注意到,库文件中的最后一行语句是 " 1; " 。对于 require 函数来说这是必须的,此时 require 函数将不把文件加载到程序中。
我们也可以模仿 pwd.pl 的做法编写自己的库,然后放在相应的正确目录下,这样便可以使用自定义的库了。在使用自定义的库时,也不忘记在最后一行写上 "1;" ,否则会在使用 require 时返回类似的错误提示:xxx.pl did not return a true value at xxx.plx lines 5 。 |
|