曲径通幽论坛

标题: 使用 require 导入库文件 [打印本页]

作者: beyes    时间: 2011-10-24 17:17
标题: 使用 require 导入库文件
require 可以导入 Perl 库,然后便可执行其中的例程或代码,它类似于 C 语言中的 #include 。

标准 Perl 库提供了许多 Perl 4 时编写的许多 .pl 库,它们由包含在其中的子例程组成,比如你可以查看 /usr/share/perl5/pwd.pl 这个文件,该文件包含了两个子例程,其中一个用来切换工作目录。

使用 require 的有的格式为:require EXPR 。也可以不带参数,此时该函数导入的就是 $_ 变量值。require 导入的库文件要存在于
@INC
所包含的某个路径之中,否则函数将执行失败,并返回类似于下面的信息:
$ ./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 。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2