perl的USE和require
相同:
都可以用来引用module(.PM)。
不同:
1) 区别在于USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径;
2)use引入的名称不需要后缀名,默认找.PM文件,而require需要后缀名,且后缀名可以为.PM或.PL;
实例:c:\perl目录下3个文件如下(且module文件的最后必须有1;)
use strict;
BEGIN {
my $scriptDir = $0;
$scriptDir =~ s:\\:/:g;
$scriptDir =~ s,/?[^/]+$,,;
$scriptDir = "." if ($scriptDir eq "");
unshift(@INC, $scriptDir);
}
#require "c:\\perl\\pmodule1.pl";
require "pmodule1.pl";
use pmodule2;
Hello1();
Hello2();
print "I am caller!\n";
exit 0;
#file : pmodule1.pl
use strict;
sub Hello1
{
print "Hello1\n";
}
1;
#file : pmodule2.pm
use strict;
sub Hello2
{
print "Hello2\n";
}
1;
3)use语句是编译时引入的,require是运行时引入的; 下面的例子是错误的:
use Config;
if( $Config{'osname'} eq "MSWin32" )
{
use Win32Module;
}
else
{
use UnixModule;
}
正因为use是发生在编译期,代码没有执行,所以$Config变量的值是无法判断的。在内部,use其实调用了require和import静态函数。import()函数告诉包哪些特征将要被导入当前包中,这意味着用之前不必验证函数或者变量是否合法。而require是不会调用import()的。
4)use引入模块的同时,也引入了模块的子模块。而require则不能引入,要在重新声明;例如
use my
my中包含了一个Module.pm
而require 则需要引入
require my
require my::Module.pm
如果不想让use引入Module.pm则可以用 use require() 加一对括号来说明即可。
5)USE引用模块时,如果模块名称中包含::双冒号,该双冒号将作为路径分隔符,相当于Unix下的/或者Windows下的\。 如:
use MyDirectory::MyModule;
编译器将从@INC指定的目录下的MyDirectory子目录去寻找MyModule模块, 类似
如下路径:
C:\Perl\lib\MyDirectory
C:\Perl\ext\lib\MyDirectory
C:Perl\site\lib\MyDirectory
完!
perl的USE和require相关推荐
- Perl中use、require的用法和区别
2019独角兽企业重金招聘Python工程师标准>>> Exporter Module usage ...
- Perl中use和require用法对比
本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...
- 汉澳sinox2019操作系统AI企业版发布
国领先的操作系统和计算机语言重装上阵! 打造办公系统,图形设计,服务器,新编程语言,人工智能AI深度学习,立即可用 汉澳sinox2019操作系统AI企业版发布 始于2003年的汉澳-器浦发展计划旨在 ...
- Perl 之 use(), require(), do(), %INC and @INC
来源: http://www.cnblogs.com/itech/archive/2013/03/12/2956185.html 转自:http://perl.apache.org/docs/gene ...
- perl use和require的用法
本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...
- perl 连接mysql_perl如何连接mysql数据库?
环境:ActivePerl-5.12.2.1202-MSWin32-x86-293621 我机器上有oracle和mysql,用ppm自动安装以后,可以连接oracle,我想手动连接上mysql,于是 ...
- php中perl配置,配置Apache及运行perl,php
//检测配置文件语法 # httpd –t # apachectl configtest //查看编译配置参数 # apachectl –V //查看已经编译的模块 # apachectl –l // ...
- Perl默认的内部变量
$- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $" 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程ID $% ...
- Perl内置及特殊变量
一.正则表达式特殊 变量: 1.$n:包含上次模式匹配的第n个子串 2.$&:前一次成功模式匹配的字符串 3.$`:前次匹配成功的子串之前的内容 4.$':前次匹配成功的子串之后的内容 5.$ ...
- perl 命令行小记
整洁性 -w 打开警告 -Mstrict 打开严格编译指示(pragma) 数据 -0 (这是个零)指定输入记录分隔符 -a 将数据分割成名为 @F 的数组 -F 指定分割时 -a 使用的模式(请参阅 ...
最新文章
- Ubuntu 16.04源码编译安装nginx 1.10.0
- 2015/6/1站立会议(补发)
- 哈夫曼编码(Huffman)Java实现代码
- 把图片保存到数据库的实现
- UVA572 Oil Deposits DFS求解
- 鼎信诺审计前端取数工具_给2019前端的5个建议
- 初识Notification
- 日语学习-多邻国-时间
- java 反编译 行号对齐 decompiler如何去掉行号
- jquery中的ajax方法参数
- 京东线报-京东实时线报-高级京东线报接口
- 英语数字听力训练精灵
- gie拉取Can‘t update master has no tracked branch
- 华为组织结构30年演变历程(一文说透)
- 2021-06-08
- ANS.1编码详解(一)----基础语法和数据类型
- PLG SaaS 案例:如何实践外链自动增长策略?
- 网络爬虫判断页面是否更新
- 【秃头系列】-【本科生毕设论文格式Word】自动生成论文多级标题并排版正文
- 关于Office32与Office64版本冲突的问题解决
热门文章
- HTML sublime :Please wait a bit while PyV8 binary is being downloaded 及代码和注释颜色 ,大小调节
- Python3.4 枚举类型的使用
- 关于对QQ 输入法的评价
- Jquery向页面append新元素之后,如何解决事件的绑定问题?
- CentOS-6.3安装配置Nginx
- Hibernate应用中Java对象的状态
- sql union用法和sql union all用法,sql union效率
- ASP.NET 如何在网页中获取根目录
- 纯虚函数的一些问题和注意事项
- 数据分析师的30种死法