免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1804 | 回复: 3
打印 上一主题 下一主题

perl的模块是如何修改perl本身的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-22 08:15 |只看该作者 |倒序浏览
随着学习perl的逐渐深入,我发现perl的module似乎可以修改或者增强perl语言的本身。
例如cpan中有一个模块switch,模拟c中的switch语句,使用以后看起来,perl中真正实现了switch似的。

使用IO::File以后,FILEHANDLE就成了一个对象。

还有象WeakRef模块,也深入到了perl的内部。

我所知道的其他语言都没这种功能,只有c++的运算符重载,看起来有些象。

这种功能非常奇妙,但我暂时没有时间和精力深入分析其实现过程,请问谁能简单介绍一下,或者推荐一篇文章参考参考?

论坛徽章:
0
2 [报告]
发表于 2007-02-22 09:48 |只看该作者
perl programming
chapter 13, 14

论坛徽章:
0
3 [报告]
发表于 2007-02-23 14:02 |只看该作者
Perl 里这样的情况并不少见。 非模块的 例如 Perl OO 是 Perl 5 才加进去的。还有 Exception 的功能( 通常使用 Exception::Class 来实现  http://search.cpan.org/perldoc?Exception::Class)

没有什么好的资源推荐给你, 因为我对这方面也没有深入的了解。 或者 Perl Internal 这本书吧。 http://www.faqs.org/docs/perl5int/

英文好的话就去 perlmonk.org 里问问。Perl 社区的很多人都在那里,更容易得到全面的答案。

论坛徽章:
0
4 [报告]
发表于 2007-02-24 00:56 |只看该作者

perl运算符加载

我从perldoc overload初步了解一点运算符加载

CPAN 上有个Number::Fraction的模块,用来做分数算术运算,那里头就有运算符加载
的例子。

  1. use overload
  2.   q("") => 'to_string',
  3.   '0+' => 'to_num',
  4.   '+' => 'add',
  5.   '*' => 'mult',
  6.   '-' => 'subtract',
  7.   '/' => 'div',
  8.   fallback => 1;
复制代码


  1. $ perl -e'
  2. use Number::Fraction;
  3. $san_fen_zhi_yi = new Number::Fraction("1/3");
  4. $si_fen_zhi_yi = new Number::Fraction("1/4");
  5. print $san_fen_zhi_yi - $si_fen_zhi_yi, "\n"'
  6. 1/12
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP