13.4 クラスデータを管理する

1個のオブジェクトだけでなく、クラス全体においてメソッドが呼び出されるようにする必要がある。

  • クラスの名前を含む文字列を指定して、クラスメソッドを呼び出す。
package Person;

$Body_Count = 0;

sub population { return $Body_Count }

sub new {
  $Body_Count++;
  return bless({}, shift);
}

sub DESTROY { $Body_Count-- }

# 後でユーザは次のようなコードを書くことができる
package main;

for (1..10) { push @people, Person->new }
printf "There are %d people alive.\n", Person->population();