对象、模块及包

October 28, 2013 @ 01:47 PM

包基础

  • 包是方法的集合
  • 具有自己的命名空间
  • 包方法能被导出或直接调用
  1. Foo::bar()
  2. Foo->bar()
  3. bar() (如果 Foo 已导出它)

模块基础

  • 模块是包含一个或多个包的文件
  • 多数人交替使用模块和包

对象基础

  • 对象是被 bless 的哈希引用(不必是哈希引用,但它最常见)
  • bless 将单个类赋给对象
  • 对象可被重新 bless

1;

  • 模块必须以真值结束
  • 不必是 1
  • 包没有相同的限制

@ISA

Perl 的对象继承方法使用 @ISA 来决定模块继承自什么类。多年前,通过直接修改 @ISA 声明继承。现在,多数程序使用 base 编译指令声明继承。

下列代码是等效的:

  1. package Foo;
  2. require Wango;
  3. @ISA = ( "Wango" );
  4. package Foo;
  5. use base "Wango";