您的位置:首页 > 其它

perl use base 代替 @ISA

2016-05-18 17:45 399 查看
packge Mule;
use base ("Horse", "donkey"); # 声明一个超类
它是下面东西的缩写:
package Mule;
BEGIN {
our @ISA = ("Horse", "Donkey");
require Horse;
require Donkey;
}

Horse 类 :

[root@wx03 test]# cat Horse.pm
package Horse;
BEGIN {
our @ISA = "Critter";
require Critter;
};
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {
color => "bay",
legs => 4,
owner => undef,
@_, # 覆盖以前的属性
};
return bless $self, $class;
#return  $self;
};
sub sum1 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b + 7;
};

our @arr=qw/1 2 3 4 5 6 7/;
our %h1=(1,2,3,4,5,6,7,8);
1;

Critter类:

[root@wx03 test]# cat Critter.pm
package Critter;
sub new {
my $self = {};
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my ($name)=@_;
my $self = {
"name" =>$name
};
bless $self, $class; # Use class name to bless() reference
return $self;

};

sub sum2 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b;
};

sub fun1 {
$self=shift;
my $a=shift;
my $b=shift;
return $a / $b;
}
1;

[root@wx03 test]# cat t10.pl
unshift(@INC,"/root/test");
use Horse;;
$ua=Horse->new();
#print "It's an object\n" if UNIVERSAL::isa($ua, 'UNIVERSAL');
$code=Horse->sum1(4,5);

print "\$str is $code\n";

$code=Horse->sum2(4,5);
print "\$str is $code\n";
[root@wx03 test]# perl t10.pl
$str is 16
$str is 9

使用use base 代替:

[root@wx03 test]# cat Horse.pm
package Horse;
use base qw(Critter);
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {
color => "bay",
legs => 4,
owner => undef,
@_, # 覆盖以前的属性
};
return bless $self, $class;
#return  $self;
};
sub sum1 {
$self=shift;
my $a=shift;
my $b=shift;
return $a + $b + 7;
};

our @arr=qw/1 2 3 4 5 6 7/;
our %h1=(1,2,3,4,5,6,7,8);
1;

[root@wx03 test]# cat t10.pl
unshift(@INC,"/root/test");
use Horse;;
$ua=Horse->new();
#print "It's an object\n" if UNIVERSAL::isa($ua, 'UNIVERSAL');
$code=Horse->sum1(4,5);

print "\$str is $code\n";

$code=Horse->sum2(4,5);
print "\$str is $code\n";
[root@wx03 test]# perl t10.pl
$str is 16
$str is 9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: