perl学习之:use and require

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

Perl use和require用法对比

对比(一)说明:

这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序,

区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域内的化,用Perl use是不可以引入的

第一、Perl use引入的名称不需要后缀名,而require需要

第二、Perl use语句是编译时引入的,require是运行时引入的

第三,Perl use引入模块的同时,也引入了模块的子模块。而require则不能引入,要在重新声明

Perl usemy

my中包含了一个Module.pm

而require

则需要引入requiremy requiremy::Module.pm

如果不想让Perl use引入Module.pm则可以用Perl userequire()加一对括号来说明即可

第四用Perl use引入模块是趋势,但是也不能说require没有存在的必要,视具体情况而定

对比(二)说明

区别一:跟require不同的是,Perl use只能用于模块的包含,也就是.pm文件。

比如:

Perl useMyModule;

实际上,编译器将从@INC指定的目录下去寻找MyModule.pm模块。如果模块名称中包含::双冒号,该双冒号将作为路径分隔符,相当于Unix下的/或者Windows下

的。如:

Perl useMyDirectory::MyModule;

编译器将从@INC指定的目录下的MyDirectory子目录去寻找MyModule模块,类似

如下路径:

C:PerllibMyDirectory

C:PerlextlibMyDirectory

C:PerlsitelibMyDirectory

区别二:两个都是包含,但是包含的条件是不一样的。require包含是发生在程序运行期,而Perl use包含是发生在编译期。学过C/C++的人比较容易理解。下面的例子是错误的:

<CCID_NOBR>

<CCID_CODE>Perl useConfig;
if($Config{‘osname‘}eq"MSWin32")
 {  Perl useWin32Module;  }
 else  {  Perl useUnixModule;  }

正因为Perl use是发生在编译期,代码没有执行,所以$Config变量的值是无法判断的。在内部,Perl use其实调用了require和import静态函数。import()函数告诉包哪些特征将要被导入当前包中,这意味着用之前不必验证函数或者变量是否合法。而require是不会调用import()的。

时间: 2024-10-24 05:00:58

perl学习之:use and require的相关文章

perl学习之:use &amp; require

相同: 都可以用来引用module(.PM). 不同: 1) 区别在于USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径: 2)use引入的名称不需要后缀名,默认找.PM文件,而require需要后缀名,且后缀名可以为.PM或.PL: 实例:c:\perl目录下3个文件如下(且module文件的最后必须有1;) #file : CallModule.pluse strict; BEGIN {    my $scriptDir

Perl学习笔记(一)--简介

1. 查看当前所用Perl版本号 ? 1 perl –v 2.  一个简单的Perl程序 ? 1 2 3 print "hello world"; #这是注释 执行它: ? 1 Perl helloWorld.txt 文件名后缀可以是pl可以是txt 3. 一个稍微复杂点的Perl程序 ? 1 2 3 4 5 6 @line = `perldoc -u -f atan2`; //运行一个外部命令,通过反引号来调用,将输出结果一行行依次存储在@line这个数组变量中 foreach(@l

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

PERL学习笔记---正则表达式的应用

使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这

perl学习之:函数总结

一.进程处理函数 1.进程启动函数 函数名 eval 调用语法 eval(string) 解说 将string看作Perl语句执行.正确执行后,系统变量[email protected]为空串,如果有错误,[email protected]中为错误信息. 例子 $print = "print (\"hello,world\\n\");";eval ($print); 结果输出 hello, world 函数名 system 调用语法 system(list) 解说

perl学习 之:my local our

范围声明 和全局声明类似,词法范围声明也是在编译时起作用的.和全局声明不同的是,词法范围声明的作用范围是从声明开始到闭合范围的最里层(块,文件,或者 eval--以先到者为准).这也是为什么我们称它为词法范围,尽管"文本范围"可能更准确些,因为词法范围这个词实在和词法没什么关系.但是全世界的计算机科学家都知道"词法范围"是什么意思,所以在这里我们还是用这个词. Perl 还支持动态范围声明.动态范围同样也伸展到最里层的闭合块,但是这里的"闭合"是

perl学习之内置变量

Perl内置特殊变量 一.正则表达式特殊变量:1.$n  :包含上次模式匹配的第n个子串2.$& :前一次成功模式匹配的字符串3.$`  :前次匹配成功的子串之前的内容4.$’ :前次匹配成功的子串之后的内容5.$+ :前一次使用括号的模式匹配的字符串. 二.文件句柄特殊变量:1.$| :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件2.$% :当前输出页号3.$= :当前每页长度4.$- :当前页剩余的行数5.$~ :当前报表输出格式的名称.

继续Perl学习 递归

有一段时间学习PYTHON,很伤心啊,版本太新,好多东西用起来不方便. 还是继续用我的小***perl吧,我相信perl会解决掉我遇到的大部分问题! 一.统计随机数出现频次 --源代码 --- 结果显示 二.递归应用,阶乘算法 --代码 -- 结果

Perl 学习笔记-高级控制结构

1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<condition>){}else{code...;}  也就是当条件为假是执行. unless (0) { print "Hello"; #Hello } 2. until控制结构 until就是改装过的while, 区别在于它在条件为假是执行代码块. $i = 2;$j = 10; u