曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4635|回复: 0
打印 上一主题 下一主题

使用 require 导入库文件

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-10-24 17:17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-6 01:11 , Processed in 0.059053 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表