#!/usr/bin/perl -w
package person;
use strict;
sub new {
my $class = shift();
print("CLASS = $class\n");
my $self = {};
$self->{"name"} = shift();
$self->{"sex"} = shift();
bless $self, $class;
return $self;
}
sub getName {
my ($self) = @_;
return $self->{"name"};
}
sub setName {
my ($self, $name) = @_;
$self->{"name"} = $name;
}
sub getSex {
my ($self) = @_;
return $self->{"sex"};
}
sub setSex {
my ($self, $sex) = @_;
$self->{"sex"} = $sex;
}
1;
注意new方法中的最后一行:
return $self;
是可以去掉的。 3、person.pl的内容
#!/usr/bin/perl -w
use strict;
use person;
sub main() {
my $tom = person->new("Tom", "male");
my $kiss = person->new("Kiss", "female");
my @persons = ($tom, $kiss);
for my $p (@persons) {
printf("NAME: %s\tSEX: %s\n", $p->getName(), $p->getSex());
} }
&main();
4、程序运行结果
QUOTE:
CLASS = person
CLASS = person
NAME: Tom SEX: male
NAME: Kiss SEX: female
5、当调用person->new("Tom", "male")时发生了哪些事情?
sub new { my $class = shift(); print("CLASS = $class\n"); my $self = {}; $self->{"name"} = shift(); $self->{"sex"} = shift(); bless $self, $class; return $self; }