perl 传递对象到模块

perl 中的对象 就是引用 通过new方法传递数据结构给各个模块

[root@wx03 test]# cat x1.pm 
package x1;  
use Data::Dumper;  
sub new {  
my $self ={};
my $invocant = shift;  
my $class = ref($invocant) || $invocant;  
my ($name,$age,$starting_position,$monthly_salary)=@_;  
      my $self = {  
         "name" =>$name,  
         "age" =>$age  
                 }; 
print "\$class is $class\n";  
print "--------------------\n";
print $self->{name};
print "\n";
print "--------------------\n";






bless($self, $class); # 给予对象性质  
print "\$self is $self\n";
$str=Dumper($self);
print "\$str is $str\n";

return $self;  
};  


sub sum_var { 
  my ($self,
      $var1,              # Name or IP number of host to ping
      $var2,           # Seconds after which ping times out
      ) = @_;
my $var3= $var1 + $var2;
return $var3;
 } 
1;

[root@wx03 test]# cat a2.pl 
unshift(@INC,"/root/test"); 
require x1;
$ed=x1->new('lily','29');
print "\n";

[root@wx03 test]# perl a2.pl 
$class is x1
--------------------
lily
--------------------
$self is x1=HASH(0xd49310)  ###perl里对象就是hash
$str is $VAR1 = bless( {
                 'name' => 'lily',
                 'age' => '29'
               }, 'x1' );

			   
			   
			 
			 
			 
-----------------------------------------------------
[root@wx03 test]# cat x1.pm 
package x1;  
use Data::Dumper;  
sub new {  
my $self ={};
my $invocant = shift;  
my $class = ref($invocant) || $invocant;  
my ($name,$age,$starting_position,$monthly_salary)=@_;  
      my $self = {  
         "name" =>$name,  
         "age" =>$age  
                 }; 






bless($self, $class); # 给予对象性质  

return $self;  
};  


sub sum_var { 
  my ($self,
      $var1,              # Name or IP number of host to ping
      $var2,           # Seconds after which ping times out
      ) = @_;
my $var3= $var1 + $var2;
return $var3;
 } 
1;

[root@wx03 test]# cat x2.pm 
package x2;  
use Data::Dumper; 

sub sum_a { 
  my ($self,              ##传入对象
      $var1,              # Name or IP number of host to ping
      $var2,           # Seconds after which ping times out
      ) = @_;
print "x2 module\n";
print $self->{name};
print "\n";
my $var3= $var1 + $var2 +99;
return $var3;
 } 
1;
[root@wx03 test]# cat a1.pl 
unshift(@INC,"/root/test"); 
require x1;
require x2;
$ed=x1->new('lily','29');
print "----------------------\n";
print x2::sum_a($ed,90,66);  ##传入对象到x2模块
print "\n";


[root@wx03 test]# perl a1.pl 
----------------------
x2 module
lily
255

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6200069.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值