在Perl中Require 和 use 的区别
答案:2 悬赏:80 手机版
解决时间 2021-03-07 10:54
- 提问者网友:雪舞兮
- 2021-03-06 20:33
在Perl中Require 和 use 的区别
最佳答案
- 五星知识达人网友:从此江山别
- 2021-03-06 21:03
最简单的理解就是..
1. use 是在 compile time (编译时) 便会处理, 而 require 则在 runtime (跑到那一行) 才处理.
2. use 在失败时会立即报错并挂掉, require 失败时会无声无息的略过. 所以很多情况下 require 的指令会写成 eval {require Foo::Bar}; die "$@" if ( $@ );
3. use 的必须是模块(package / .pm), require 就不一定是模块, 可以 require 另一个 perl script, 使之变成 main的一部份
4. use 的模块必须出现在 @INC [注1] 所定义的范围, require 无所谓, 如果 require 的东西不在 @INC 里, 写出绝对或相对路径也可, 如: require "C:/MyPerlStuff/xyz.pm"; require "../MyPerlStuff/abc.pl";
注1: @INC 是一个 Perl 的特殊数组, 里面装著所有会出现模块的目录, 如 print "@INC" 就会看到了. 有时我们想让 Perl 加入我们自己定义位置去找模块时, 可以写: push @INC, "C:/MyPerlModules/";
1. use 是在 compile time (编译时) 便会处理, 而 require 则在 runtime (跑到那一行) 才处理.
2. use 在失败时会立即报错并挂掉, require 失败时会无声无息的略过. 所以很多情况下 require 的指令会写成 eval {require Foo::Bar}; die "$@" if ( $@ );
3. use 的必须是模块(package / .pm), require 就不一定是模块, 可以 require 另一个 perl script, 使之变成 main的一部份
4. use 的模块必须出现在 @INC [注1] 所定义的范围, require 无所谓, 如果 require 的东西不在 @INC 里, 写出绝对或相对路径也可, 如: require "C:/MyPerlStuff/xyz.pm"; require "../MyPerlStuff/abc.pl";
注1: @INC 是一个 Perl 的特殊数组, 里面装著所有会出现模块的目录, 如 print "@INC" 就会看到了. 有时我们想让 Perl 加入我们自己定义位置去找模块时, 可以写: push @INC, "C:/MyPerlModules/";
全部回答
- 1楼网友:北方的南先生
- 2021-03-06 21:46
不会! 所以不需要像 php 有 require 和 require_once 之分.
只要在 %inc 里见过的模块, 就不会再 require ( 或 use ).
反之, 如果您想重载一个模块, 只需要在 %inc 里把那模块去掉了, 然後再 require (或 use), 就会重新加载
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯