假设我上课了
package Person; # Class for storing data about a person #person7.pm use warnings; use strict; use Carp; my @Everyone; sub new { my $class = shift; my $self = {@_}; bless($self, $class); push @Everyone, $self; return $self; } # Object accessor methods sub address { $_[0]->{address }=$_[1] if defined $_[1]; $_[0]->{address } } sub surname { $_[0]->{surname }=$_[1] if defined $_[1]; $_[0]->{surname } } sub forename { $_[0]->{forename}=$_[1] if defined $_[1]; $_[0]->{forename} } sub phone_no { $_[0]->{phone_no}=$_[1] if defined $_[1]; $_[0]->{phone_no} } sub occupation { $_[0]->{occupation}=$_[1] if defined $_[1]; $_[0]->{occupation} } # Class accessor methods sub headcount { scalar @Everyone } sub everyone { @Everyone} 1;
而我这样打电话
#!/usr/bin/perl # classatr2.plx use warnings; use strict; use Person; print "In the beginning: ", Person->headcount, "\n"; my $object = Person->new ( surname=> "Galilei", forename=> "Galileo", address=> "9.81 Pisa Apts.", occupation => "Philosopher" ); print "Population now: ", Person->headcount, "\n"; my $object2 = Person->new ( surname=> "Einstein", forename=> "Albert", address=> "9E16, Relativity Drive", occupation => "Theoretical Physicist" ); print "Population now: ", Person->headcount, "\n"; print "\nPeople we know:\n"; for my $person(Person->everyone) { print $person->forename, " ", $person->surname, "\n"; }
输出继电器
>perl classatr2.plx In the beginning: 0 Population now: 1 Population now: 2 People we know: Galileo Galilei Albert Einstein >
怀疑 - >我对这部分代码有疑问
for my $person(Person->everyone) { print $person->forename, " ", $person->surname, "\n"; }
查询 - >这里$ person是一个哈希引用.为什么我们这样称呼$person->forename
.而散列引用应该被称为$person->{$forename}