perl中的typeglob(三)

在前面几篇,已经详细的阐述了,typeglob和符号表的关系。

typeglob 类似于一种一对多的hash结构。

且讲述了typeglob的用法,包括,别名,use 的import 机制,EXPORTER的原理,实现OO模块中的set/get,对应文件句柄的使用。


后来看完了exporter这一章,又有一点想法和测试,总结一些细节问题。

一 。符号表是一个hash,值是符号名,在当前包中使用,值是typeglob ;

       例如 某一项是  ff   =》  *main::ff    

     值 *main::ff   包含  array  scalar  hash glob  format 等等

        @{*ff}   ${*ff}   %{*ff} 可以访问相应的值  array  scalar , 这里main是缺省了的

     把缺省补齐,会便于后面的理解。


二。.typeglob 是一种一对多的hash 结构

     

    用*号进行访问,访问typeglob时 会先查找符号表,但是查找哪一个包的符号表和*号后面的串有关。

        例如*ff  那么会查找当前包的符号表, *min::ff 那么查找min 包的符号表。

package m;

        *ff= *tt; 

那么m包的符号表中就添加       ff =》 *m::tt       tt => *m::tt     ;这个别名等同于引用,tt 中 对应的 array 修改了  ,     @{*ff} 的值也被修改

       package m;

     *{main::ff} =*tt               

  main包的符号表 添加         ff =>  *m::tt   

即:glob会先匹配包名,没有包名,包名就是当前包,   并修改相应的符号表。

          所以import机制,可以在其他包内,修改caller包的符号表。

三。typeglob的访问

        {*name} 加上花括号,前面加上 &,@ $  即可访问  ,*name 就由于一个引用一般。

转载于:https://www.cnblogs.com/shalk/archive/2012/12/12/9769631.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值