gpt4 book ai didi

perl - 什么时候应该使用 "use",什么时候应该使用 "require",什么时候应该在 perl [良好的编程习惯] 中使用 "AUTOLOAD"?

转载 作者:行者123 更新时间:2023-12-04 10:05:11 25 4
gpt4 key购买 nike

perl 中什么时候应该使用“use”,什么时候应该使用“require”,什么时候使用“AUTOLOAD” ?我需要一个拇指规则。

最佳答案

use相当于BEGIN { require Module; Module->import( LIST ); }
因此,主要区别在于:

  • 编译时使用
  • 使用自动调用导入子例程(它可以做任何事情,但主要用于将标识符导出到调用者的命名空间)
  • 如果无法加载模块(缺失/编译错误)
  • ,请使用 dies

    因此:
  • 当您需要动态加载模块时(例如,根据命令行参数确定加载哪个模块),使用 require .
  • 一般来说,当您需要精确控制模块何时加载时,使用 require ( use 将在前面的 useBEGIN block 之后加载模块, 在编译时 )。
  • 当您需要以某种方式绕过调用模块的 import() 时子程序,使用 require
  • 当你需要做一些聪明的事情来处理加载错误(缺少模块,模块无法编译),你可以包装require进入 eval { }声明,所以整个程序不会死。

    您可以使用 use 进行模拟但是以相当不优雅的方式(在早期的 die block 中捕获 BEGIN 信号应该可以工作)。但是eval { require }更好。
  • 在所有其他情况下,请使用 use

  • 我没有介绍 AUTOLOAD,因为那是一个不同的野兽。它的用途是在您想要拦截对尚未导入命名空间的子例程的调用的情况下。

    关于perl - 什么时候应该使用 "use",什么时候应该使用 "require",什么时候应该在 perl [良好的编程习惯] 中使用 "AUTOLOAD"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249539/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com