package Point3D; # 継承 use base "Point"; # コンストラクタは便宜的に new という名前 # my $point3 = Point3D->new(x=>2, y=>3, z=>4); sub new { my $self = shift()->SUPER::new(@_); $self->z = 0 unless exists $self->{z}; return $self; } # $point3->z とすれば z の値が取れる # $point3->z(0) とすれば z の値を 0 にできる sub z { my $self = shift(); if (@_) { $self->{z} = $_[0]; } else { return $self->{z}; } } # 値をクリアして 0 にする # $point3->clear(); sub clear { my $self = shift(); $self->SUPER::clear; $self->z(0); } # モジュールは最後にこれを付ける 1;