相同:

都可以用来引用module(.PM)。

不同:

1) 区别在于USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径;

2)use引入的名称不需要后缀名,默认找.PM文件,而require需要后缀名,且后缀名可以为.PM或.PL;

实例:c:\perl目录下3个文件如下(且module文件的最后必须有1;)

#file : CallModule.pl
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相关推荐

  1. Perl中use、require的用法和区别

    2019独角兽企业重金招聘Python工程师标准>>> Exporter Module usage                                           ...

  2. Perl中use和require用法对比

    本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...

  3. 汉澳sinox2019操作系统AI企业版发布

    国领先的操作系统和计算机语言重装上阵! 打造办公系统,图形设计,服务器,新编程语言,人工智能AI深度学习,立即可用 汉澳sinox2019操作系统AI企业版发布 始于2003年的汉澳-器浦发展计划旨在 ...

  4. Perl 之 use(), require(), do(), %INC and @INC

    来源: http://www.cnblogs.com/itech/archive/2013/03/12/2956185.html 转自:http://perl.apache.org/docs/gene ...

  5. perl use和require的用法

    本文和大家重点学习一下Perl use和require用法对比,这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域 ...

  6. perl 连接mysql_perl如何连接mysql数据库?

    环境:ActivePerl-5.12.2.1202-MSWin32-x86-293621 我机器上有oracle和mysql,用ppm自动安装以后,可以连接oracle,我想手动连接上mysql,于是 ...

  7. php中perl配置,配置Apache及运行perl,php

    //检测配置文件语法 # httpd –t # apachectl configtest //查看编译配置参数 # apachectl –V //查看已经编译的模块 # apachectl –l // ...

  8. Perl默认的内部变量

    $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $" 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程ID $% ...

  9. Perl内置及特殊变量

    一.正则表达式特殊 变量: 1.$n:包含上次模式匹配的第n个子串 2.$&:前一次成功模式匹配的字符串 3.$`:前次匹配成功的子串之前的内容 4.$':前次匹配成功的子串之后的内容 5.$ ...

  10. perl 命令行小记

    整洁性 -w 打开警告 -Mstrict 打开严格编译指示(pragma) 数据 -0 (这是个零)指定输入记录分隔符 -a 将数据分割成名为 @F 的数组 -F 指定分割时 -a 使用的模式(请参阅 ...

最新文章

  1. Ubuntu 16.04源码编译安装nginx 1.10.0
  2. 2015/6/1站立会议(补发)
  3. 哈夫曼编码(Huffman)Java实现代码
  4. 把图片保存到数据库的实现
  5. UVA572 Oil Deposits DFS求解
  6. 鼎信诺审计前端取数工具_给2019前端的5个建议
  7. 初识Notification
  8. 日语学习-多邻国-时间
  9. java 反编译 行号对齐 decompiler如何去掉行号
  10. jquery中的ajax方法参数
  11. 京东线报-京东实时线报-高级京东线报接口
  12. 英语数字听力训练精灵
  13. gie拉取Can‘t update master has no tracked branch
  14. 华为组织结构30年演变历程(一文说透)
  15. 2021-06-08
  16. ANS.1编码详解(一)----基础语法和数据类型
  17. PLG SaaS 案例:如何实践外链自动增长策略?
  18. 网络爬虫判断页面是否更新
  19. 【秃头系列】-【本科生毕设论文格式Word】自动生成论文多级标题并排版正文
  20. 关于Office32与Office64版本冲突的问题解决

热门文章

  1. HTML sublime :Please wait a bit while PyV8 binary is being downloaded 及代码和注释颜色 ,大小调节
  2. Python3.4 枚举类型的使用
  3. 关于对QQ 输入法的评价
  4. Jquery向页面append新元素之后,如何解决事件的绑定问题?
  5. CentOS-6.3安装配置Nginx
  6. Hibernate应用中Java对象的状态
  7. sql union用法和sql union all用法,sql union效率
  8. ASP.NET 如何在网页中获取根目录
  9. 纯虚函数的一些问题和注意事项
  10. 数据分析师的30种死法