perl 面向对象 -> 符号使用
来源:互联网 发布:sql count(1) 编辑:程序博客网 时间:2024/04/26 11:34
-> 有两种用法,都和解引用有关。 第一种用法,就是解引用。 根据 -> 后面跟的符号的不同,解不同类型的引用, ->[] 表示解数组引用,->{} 表示解散列引用,->() 表示解子程序引用。 例子: $arr_ref = \@array; $arr_ref->[0] 访问数组 @array 的第一个元素。--------------------------------------------------------[root@master ~]# cat 1.pl @array = qw/1 2 3 4 5/;##创建数组引用$arr_ref = \@array; print "\@array is @array\n";print "\$arr_ref is $arr_ref\n";##访问数组 @array 的第一个元素print "第一个元素是$arr_ref->[0]\n";[root@master ~]# perl 1.pl @array is 1 2 3 4 5$arr_ref is ARRAY(0x1512398)第一个元素是1-------------------------------------------------------- $hash_ref = \%hash; $hash_ref->{foo} 访问 %hash 的 foo 分量 --------------------------------------------------------[root@master ~]# cat 2.pl %hash=('foo',1,'b',2); print %hash;print "\n";##定义hash引用$hash_ref = \%hash;##访问 %hash 的 foo 分量$var=$hash_ref->{foo};print "\$var is $var\n";[root@master ~]# perl 2.pl b2foo1$var is 1--------------------------------------------------------$sub_ref = \&test; $sub_ref->(1, 2, 3) 使用参数列表 (1,2,3) 来调用 &test 这个子程序。 -------------------------------------------------------[root@master ~]# perl 3.pl $max is 2$max is 3[root@master ~]# cat 3.pl sub test { $max = shift(@_); for my $item (@_) { $max = $item if $max < $item; print "\$max is $max\n";}};$sub_ref = \&test; $sub_ref->(1, 2, 3) ;[root@master ~]# perl 3.pl $max is 2$max is 3----------------------------------------------------------第二种用法,就是调用类或者对象的方法。 格式: $obj->method(); 或者 ClassName->method(); 例如: $pop3->login( $username, $password ); my $ftp = Net::FTP->new("some.host.name", Debug => 0); 这两种用法略有不同, 但是总的来说,符合以下规则: 引用:[color=red]假设 -> 的左操作数(就是左边那个值,如 $pop3 和 Net::FTP)是 $left,右操作数(就是右边那个值,如 login 和 new)是 $right,那么 -> 的运算规则就是: if ( ref $left 有效 ){ # 也就是说 $left 是个引用,而不是个裸字 $ClassName = ref $left; # 取引用的类型,当作类名称}else{ $ClassName = $left; # 直接把裸字当作类名称} $p = Net::Ping->new("icmp"); ---创建对象 if ($p->ping($host,2)) ----调用对象的方法Net::Ping->new([$proto [, $def_timeout [, $bytes [, $device [, $tos ]]]]]); 新建了一个Net::Ping对象。第一个参数($proto)为协议值,共有六种选择:TCP、UDP、ICMP、STREAM、SYN、EXTERNAL,默认值为TCP主要方法: ------------------------------------------------------------------------------------------------------ Net::Ping->new([$proto [, $def_timeout [, $bytes [, $device [, $tos ]]]]]); 新建了一个Net::Ping对象。第一个参数($proto)为协议值,共有六种选择:TCP、UDP、ICMP、STREAM、SYN、EXTERNAL,默认值为TCP;第二个参数为默认超时值($def_timeout),以秒为单位,设置此值是为了定义PING方法的超时值,默认为5秒;发送包的数据大小($bytes)会根据你选择的协议不同而有不同的结果,当你选择的协议为TCP时系统忽略此值,当协议为UDP时此值默认为为1(最小值),其他类型则为0,此值可以选择的最大值为1024;设备选项($device)为输出设备接口;服务类型Type of service($tos)通常可以忽略。可以使用无参数方式调用此方法。调用此方法后的返回值为一个Net::Ping对象变量。
0 0
- perl 面向对象 -> 符号使用
- Perl 对象调用方法使用->符号
- 面向对象的Perl
- perl 面向对象 笔记
- perl面向对象
- perl面向对象
- perl 面向对象举例
- perl 面向对象
- Perl面向对象--类
- Perl面向对象--继承
- perl 面向对象demo
- perl面向对象
- perl 面向对象
- Perl 面向对象编程
- Perl 面向对象上
- Perl 面向对象编程时 bless()函数的使用
- 面向对象的Perl 1
- 面向对象的perl 2
- Java面向对象之重载和重写
- javaSE学习笔记之线程
- java面向对象编程基本概念
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议
- 第4章 基纳法 阅读(PageRank的兄弟)
- perl 面向对象 -> 符号使用
- 2.2 Zend_Controller 基础
- 键值表
- iOS7中的多任务
- linux变量的心得
- Android入门(14)——使用Spinner实现下拉列表
- Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度
- Category
- 正处于尴尬的年纪