【Perl】 Require 和 USE的区别

本文详细对比了Perl语言中use与require两个关键字的功能及使用场景。use在编译时引入模块并导入指定的符号,而require则在运行时加载模块但不执行导入操作。此外,还介绍了如何通过use控制命名空间污染以及未来的使用趋势。
1 都是引入模块,语法:
       use ModuleName;
       require ModuleName;
   ModuleName 不必加pm扩展名
 
2 区别之一,use语句是编译时引入的,require是运行时引入的。
 
 
3 区别之二,use语句所做的事情比require要多一点点,一条
         use ModuleName;
语句大致相当于
         require ModuleName;
         import  ModuleName::(@EXPORT);
上面两句的内容。
也就是说,哪怕只用 use ModuleName,当前包的命名空间都会被ModuleName中的@EXPORT中的函数和变量“玷污”,好处是使用 ModeleName中的函数和变量不不必加包前缀 Modelename::
 
4 如果要use 语句不会“玷污”当前的包命名空间,直接用
         use ModuleName () #一个空括号
就行了,这不表示不能用ModuleName的函数和变量,只是用时需要加包前缀,如
    $xyz = ModuleName::function1();
 
5 有时除了引入默认的@EXPORT中的函数和变量,还可以引入附加的函数和变量,这个列表定义在ModuleName 的@EXPORT_OK数组中。可以用
 
     use ModuleName (@EXPORT_OK的一个片段)
 
这样的方式来引入
 
6 用use能在编译时就发现问题,用use是未来的趋势。



T he use function allows Perl modules and pragmas to be imported into your program at compile time. The use function will not import a module if the module's filename does not have the .pm extension. The require function does the same thing but does not do imports and loads the module at runtime .
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` 是比较适合的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值