Perl 教程 之 Perl 包和模块 4

简介: Perl教程讲解了包和模块的使用。`require`和`use`函数都能调用模块,但有区别:`require`在运行时加载,需指定包名调用函数;`use`在编译时加载,无需包名且能引入子模块。`use`根据@INC路径找模块,`require`可指定路径。通过`use Exporter`, `@ISA = qw(Exporter)`, `@EXPORT`数组可导出默认符号。示例中展示了如何定义和导出模块中的函数。

Perl 教程 之 Perl 包和模块 4

Perl 包和模块

Require 和 Use 函数

模块可以通过 require 函数来调用,如下所示:

实例

!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );
也可以通过 use 函数来引用:

实例

!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );
我们注意到 require 引用需要使用包名指定函数,而 use 不需要,二者的主要区别在于:

1、require用于载入module或perl程序(.pm后缀可以省略,但.pl必须有)
2、Perl use语句是编译时引入的,require是运行时引入的
3、Perl use引入模块的同时,也引入了模块的子模块。而require则不能引入,要在重新声明
4、USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径
5、USE引用模块时,如果模块名称中包含::双冒号,该双冒号将作为路径分隔符,相当于Unix下的/或者Windows下的\。 如:
use MyDirectory::MyModule
通过添加以下语句 use 模块就可以从模块中导出列表符号:

require Exporter;
@ISA = qw(Exporter);
@EXPORT数组包含默认导出的变量和函数的名字:

package Module;

require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(bar blat); # 默认导出的符号

sub bar { print "Hello $[0]\n" }
sub blat { print "World $
[0]\n" }
sub splat { print "Not $_[0]\n" } # Not exported!

1;

目录
相关文章
|
数据格式
一文读懂A2L文件和ASAP2 Studio的使用
一文读懂A2L文件和ASAP2 Studio的使用
一文读懂A2L文件和ASAP2 Studio的使用
|
关系型数据库 MySQL
Mysql连接无效(invalid connection)解决方案
Mysql连接无效(invalid connection)解决方案
1819 0
Mysql连接无效(invalid connection)解决方案
|
4月前
|
人工智能 缓存 监控
MCP工具开发实战:打造智能体的"超能力"
作为一名深耕AI技术领域多年的博主摘星,我深刻认识到工具(Tools)在现代智能体系统中的核心地位。在Anthropic推出的Model Context Protocol(MCP)框架下,工具不再是简单的功能模块,而是赋予AI智能体真正"超能力"的关键组件。通过深入研究MCP工具开发的各个层面,我发现这一技术正在重新定义人机交互的边界。MCP工具开发不仅仅是编写几个函数那么简单,它涉及复杂的参数验证机制、精密的错误处理策略、高效的异步调用模式,以及优雅的工具组合设计。在实际项目中,我见证了许多开发者因为缺乏对MCP工具设计原则的深入理解,导致开发出的工具要么性能低下,要么稳定性差,要么无法与其
273 0
MCP工具开发实战:打造智能体的"超能力"
|
安全 网络协议 网络安全
DDoS攻击的模式
【10月更文挑战第13天】DDoS攻击的模式
470 12
|
Go
go使用snmp库查询mib数据
go使用snmp库查询mib数据
305 0
|
关系型数据库 MySQL Linux
FATAL ERROR: Could not find my_print_defaults
FATAL ERROR: Could not find my_print_defaults
325 0
|
Linux Go
[飞腾]Trace32使用概述(2)
[飞腾]Trace32使用概述(2)
1040 0
[飞腾]Trace32使用概述(2)
|
前端开发 应用服务中间件 网络安全
在Apache上http强制跳转到https无效的解决办法
在Apache上http强制跳转到https无效的解决办法
774 0
Centos8下搭建Squid代理服务器
Centos8下搭建Squid代理服务器
437 0