俺がPerlを捨ててRubyに行った理由と同じ

2008-09-03

彼が全部代弁している。

# クラス名定義
package PackageName::ClassName;

# 親クラス設定
use base qw(PackageName::ParentClassName);

# コンストラクタ定義
sub new {
  my($class, @args) = @_;
  my $obj = bless $class->SUPER::new(), $class;
  $obj->initialize(@args);
  return $obj;
}

# インスタンス初期化
sub initialize {
  my($self, @args) = @_;
  $self->{instance_variable1} = 'scolar instance variable';
  $self->{instance_variable2} = ['array', 'instance', 'variable'];
  $self->{instance_variable3} = {hash => 'instance variable'};
}

# メソッド定義
sub method1 {
  my($self, @args) = @_;
  $self->{instance_variable1};
}

かれこれ10年くらい前だろうか。オブジェクト指向について右も左もわからなかった当時だっただけに、最初見たとき何がなんだかわからなくて寒気が走った。blessはトラウマ。
昔は「use base」なんてなくてなんかの変数を直接いぢってたよなあ。