加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl中的typeglob(三)

发布时间:2020-12-15 21:00:11 所属栏目:大数据 来源:网络整理
导读:在前面几篇,已经详细的阐述了,typeglob和符号表的关系。 typeglob 类似于一种一对多的hash结构。 且讲述了typeglob的用法,包括,别名,use 的import 机制,EXPORTER的原理,实现OO模块中的set/get,对应文件句柄的使用。 后来看完了exporter这一章,又有

在前面几篇,已经详细的阐述了,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 就由于一个引用一般。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读