1. <pre name="code" class="python">[root@wx03 wx]# cat x1.pm
  2. package x1;
  3. use Data::Dumper;
  4. sub new {
  5. my $self ={}; ##引用
  6. my $invocant = shift;
  7. my $class = ref($invocant) || $invocant;
  8. print "\$class is $class\n";
  9.  
  10. bless($self, $class); # 给予对象性质 告诉 方法属于哪个对象,$class==x1, bless 引用 特定的包 ,
  11. ### bless 引用 特定的包 来实现面向对象
  12. print "11111111111111\n";
  13. print $self;
  14. print "\n";
  15. use Data::Dumper;
  16. my $var= Dumper($self);
  17. print "\$var is $var\n";
  18.  
  19. print "111111111111111\n";
  20. return $self;
  21. };
  22.  
  23. sub sum_var {
  24. my ($self, ##第一个参数为对象:
  25. $var1, # Name or IP number of host to ping
  26. $var2, # Seconds after which ping times out
  27. ) = @_;
  28. my $var3= $var1 + $var2;
  29. return $var3;
  30. }
  31. 1;
  32.  
  33. 对象只是一种特殊的引用,它知道自己是和哪个类关联在一起的,而构造器知道如何创建那种关联关系。
  34.  
  35. 这些构造器是通过使用bless操作符,将一个普通的引用物转换成一个对象实现的,
  36.  
  37. bless 就是绑定一个数据结构的引用到一个包的名字上。
  38.  
  39. 一个"对象"是指一个“有办法知道它是属于哪个类”的简单引用
  40.  
  41. bless 函数接收一个或者两个参数,第一个参数是一个引用,而第二个是要把引用赐福(bless)成的包。
  42.  
  43. 如果忽略第2个参数,则使用当前包
  44.  
  45. 所有对象都是引用,但不是所有引用都是对象。
  46.  
  47. 一个引用不会作为对象运转,除非引用它的东西又特殊标记告诉Perl它属于哪个包。
  48.  
  49. 把一个引用和一个包名字标记起来(因此也和包中的类标记起来了,因为一个类就是一个包)
  50.  
  51. 的动作被称作赐福(blessing)
  52.  
  53. 你可以把赐福(bless)看作把一个引用转换成一个对象,尽管更准确地说是它把该引用转换成一个对象引用
  54.  
  55. Perl类的方法只不过是一个Perl子程序而已,也即通常所说的成员函数。Perl的方法定义不提供任何特殊语法,
  56.  
  57. 但规定方法的第一个参数为对象或其被引用的包。
  58.  
  59. Perl提供了bless()函数,用于返回一个引用,并成为一个对象。
  60. --------------------------------------------------------------------------------------------------
  61. [root@wx03 wx]# cat x1.pl
  62. unshift (@INC,"/root/wx");
  63. require x1;
  64. $ed = x1->new();
  65. print $ed->sum_var(1,5);
  66. print "\n";
  67.  
  68. [root@wx03 wx]# perl x1.pl
  69. $class is x1
  70. 11111111111111
  71. x1=HASH(0x23e82f0)
  72. $var is $VAR1 = bless( {}, 'x1' );
  73.  
  74. 111111111111111
  75. 6
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

perl 一个简单的面向对象的例子的更多相关文章

  1. [转]一个简单的Linux多线程例子 带你洞悉互斥量 信号量 条件变量编程

    一个简单的Linux多线程例子 带你洞悉互斥量 信号量 条件变量编程 希望此文能给初学多线程编程的朋友带来帮助,也希望牛人多多指出错误. 另外感谢以下链接的作者给予,给我的学习带来了很大帮助 http ...

  2. 一个简单的iBatis入门例子

    一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import ...

  3. 2.1 一个简单的Web工程例子

    一个简单的Web工程例子 开发环境: Eclipse: Neon Release (4.6.0) JDK:1.8.0_92 Tomcat:8.5.9 Maven:3.3.9 1. 在Eclipse中创 ...

  4. 一个简单的web服务器例子

    一个简单的web容器小例子,功能十分简单,只能访问静态资源,对于新手来说还是有一定的意义.主要分三个类 1.server类:主要功能开启socketServer,阻塞server,接收socket访问 ...

  5. Matlab高级教程_第二篇:一个简单的混编例子

    1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...

  6. 一个简单的Java程序例子以及其几种注释

    在说道主题前,先来啰嗦两句,o()︿︶)o 唉,不说两句心里就有个疙瘩,也许这就是所谓的强迫症吧,好了说说我想啰嗦的,其实也就是这样子的,关于Java开发工具箱的下载以及环境的配置.Java开发工具箱 ...

  7. 一个简单的Spring AOP例子

    转载自: http://www.blogjava.net/javadragon/archive/2006/12/03/85115.html 经过这段日子的学习和使用Spring,慢慢地体会到Sprin ...

  8. ibaits的一个简单的完整的例子

    ibaits的简单介绍: iBatis 是apache 的一个开源项目,一个O/R Mapping(对象/关系映射) 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,i ...

  9. 一个简单的ruby生成器例子(用连续体Continuation实现)

    ruby中有很多经典的驱动器结构,比如枚举器和生成器等.这次简单介绍下生成器的概念.生成器是按照功能要求,一次产生一个对象,或称之为生成一个对象的方法.ruby中的连续体正好可以用来完成生成器的功能. ...

随机推荐

  1. Azure上如何在Linux下挂载数据磁盘

    [原文首次发表于51cto http://cloudapps.blog.51cto.com/3136598/1653672] 在Azure上创建了虚拟机之后,我们在一些情况下会需要添加更多的数据磁盘来 ...

  2. 实现Linux下的U盘(USB Mass Storage)驱动

    如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...

  3. OSCHina技术导向:Java开源QQ工具iQQ

    iQQ 使用Java语言跨平台开发,基于腾讯WebQQ 3.0网络协议.可以使用于Java所支持的各种平台上运行.作者基于Linux(Ubuntu 12.04)系统,使用IDE NetBeans开发, ...

  4. Ruiy classicsQuotations

    1,IT界,许多人会称自己为菜鸟,而每只菜鸟都会有鹰的梦想; 2,把做十件事精力用来做一件事情,你事业就经典了;

  5. [IOS]UIWebView 请求网络页面或者加载本地资源页面

    UIWebView是一个能够显示网页的IOS视图控件,我们可以用它来访问一个网站.下面是具体的实例: 操作步骤: 1.首先在xib文件中拖放一个UIWebView控件到view中 2.将下载的页面以及 ...

  6. Windows Server 2012 R2超级虚拟化之七 远程桌面服务的增强

    Windows Server 2012 R2超级虚拟化之七  远程桌面服务的增强 在Windows Server 2012提供的远程桌面服务角色,使用户能够连接到虚拟桌面. RemoteApp程序.基 ...

  7. cmd命令大全/cmd命令提示符大全

    刚接触电脑的时候是从DOS系统开始,DOS时代根本就没有Windows这样的视窗操作界面,只有一个黑漆漆的窗口,让你输入命令.所以学DOS系统操作,cmd命令提示符是不可或缺的.可以告诉大家,大多数的 ...

  8. EK中fromCharCode和parseInt的配合使用

    基于web的漏洞攻击的第一步一般是:在landing page中通过<script>标签下的JavaScript脚本引入一些恶意链接.这些脚本往往会採用各种各样的混淆.加密手法来躲避AV和 ...

  9. 微信朋友圈分享js代码最新2015年无错版

    最近微信对分享做了进一步规范,导致很多分享都不起作用了,今天跟大家分享,2015年最新修无错的! 以下是主要微信分享页面代码:(其中红色部分主要懒友自己填写自己哈.) <?php require ...

  10. ADO.Net两种访问数据库模式

    在连接模式下的数据库访问通常包括以下几个步骤: 1.通过数据库连接类(DbConnection)链接类指定到数据库服务器的数据库 2.通过数据库命令类(DbCommand)在数据库上执行SQL命令,可 ...