13.1 オブジェクトを作成する

sub new {
  my $class = shift;
  my $self = {};
  bless($self, $class);
  return $self;
}
  • 初期化とメモリ割当/blessを分離する方法
sub new {
  my $class = shift;   # 作成するオブジェクトのクラス名を取得する
  my $self = {};   # 新しいメモリを割り当てる
  bless($self, $class);   # オブジェクトをクラスにブレスする
  $self->_init(@_);   # 残りの引数を使用して、_initを呼び出す
  return $self;
}

# フィールドを初期化するための"プライベート"メソッド
sub _init {
  my $self = shift;
  $self->{START} = time();
  $self->{AGE} = 0;
  if (@_) {
    my %extra = @_;
    @$self{keys %extra} = values %extra;
  }
}