Perl中use和require用法对比

出处:http://developer.51cto.com/art/201007/213710.htm

Perl中use和require用法对比

2010-07-23 15:17 EagleYIN417 csdn.net  字号: T |  T
一键收藏,随时查看,分享好友!

在学习Perl语言的过程中你可能会遇到Perl use和require用法的问题,这里向大家介绍一下Perl use和require用法对比,希望对你有用。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

本文和大家重点学习一下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++的人比较容易理解。下面的例子是错误的:
 

   
   
  1. Perl useConfig;  
  2. if($Config{'osname'}eq"MSWin32")  
  3. {  
  4. Perl useWin32Module;  
  5. }  
  6. else  
  7. {  
  8. Perl useUnixModule;  


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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Perl ,`require` 和 `use` 都是用来导入模块的关键字,它们的作用类似,但是用法略有不同。 `use` 是在编译时执行的,在导入模块的同时会执行模块的代码,一般情况下我们会在 Perl 脚本的开头使用 `use` 导入需要的模块。例如: ``` use strict; use warnings; use Data::Dumper; ``` 上面的代码,`strict` 和 `warnings` 是 Perl 的标准模块,`Data::Dumper` 是第三方模块。使用 `use` 导入模块后,可以使用该模块定义的函数、变量或常量。 `require` 也是用来导入模块的,但是它是在运行时执行的,只有在需要使用模块时才会执行 `require` 操作。例如: ``` require MyModule; ``` 如果 `MyModule.pm` 文件存在并且能够成功加载,那么 `require` 操作就会返回真值。如果 `MyModule.pm` 文件不存在或者无法加载,那么 `require` 操作就会返回假值,并且会抛出一个运行时错误。 `require` 和 `use` 的区别在于: - `use` 是在编译时执行的,`require` 是在运行时执行的; - `use` 会自动将模块名转换为文件名并搜索路径,`require` 则需要手动指定文件名和路径; - `use` 会自动执行模块的代码,`require` 则不会自动执行模块的代码,需要在需要的地方手动调用。 总的来说,如果我们需要在脚本的开头就导入某个模块并且需要执行其的代码,那么使用 `use` 是比较方便的;如果我们需要在运行时根据需要动态导入某个模块,那么使用 `require` 是比较适合的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值