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

perl 面向对象 -> 符号使用

发布时间:2020-12-15 23:42:43 所属栏目:大数据 来源:网络整理
导读:- 有两种用法,都和解引用有关。 第一种用法,就是解引用。 根据 - 后面跟的符号的不同,解不同类型的引用, -[] 表示解数组引用,-{} 表示解散列引用,-() 表示解子程序引用。 例子: $arr_ref = @array; $arr_ref-[0] 访问数组 @array 的第一个元素。----
-> 有两种用法,都和解引用有关。 



第一种用法,就是解引用。 
根据 -> 后面跟的符号的不同,解不同类型的引用, 
->[] 表示解数组引用,->{} 表示解散列引用,->() 表示解子程序引用。 
例子: 
$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 @arrayn";
print "$arr_ref is $arr_refn";
##访问数组 @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 $varn";

[root@master ~]# perl 2.pl 
b2foo1
$var is 1

--------------------------------------------------------


$sub_ref = &;test; 
$sub_ref->(1,2,3) 使用参数列表 (1,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 $maxn";
}};

$sub_ref = &;test;  
$sub_ref->(1,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 [,$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对象变量。 

(编辑:李大同)

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

    推荐文章
      热点阅读