camel

Perl 5��OO�ϡ�����Ƥ��ޤ��ȴ�ñ����

�Ѿ��Ȥ��ͤ����ˡ����̤˥��饹���ꤿ����С�ɬ�פʤΤϰʲ�����Ԥ�����

package Klass;
sub new { bless {} };

��������Ǥϲ���Ǥ��ʤ��Τǡ��Ȥꤢ����name�Ȥ����������������ɲä��Ƥߤ롣���������

sub name {
  my $self = shift;
  $self->{name} = shift if @_;
  return $self->{name};
}

����������η������ȡ��Ѿ��򥵥ݡ��Ȥ��Ƥ��ʤ��������顢

package Klass;
sub new { bless {} };

package Klass::Sub;
our @ISA = qw/Klass/;
# new �ϷѾ�
sub name {
  my $self = shift;
  $self->{name} = shift if @_;
  return $self->{name};
}

package main;
my $o = Klass::Sub->new();
$o->name("foo");
warn $o->name

�Ȥ��Ƥ⡢Can't locate object method "name" via package "Klass"���ܤ��Ƥ��ޤ���

�Ѿ��򥵥ݡ��Ȥ���ˤϡ�bless()�ˤ⤦��İ������Ϥ���

package Klass;
sub new {
  my $class = shift;
  bless {}, $class;
}

������������ϥ��饹��̾����Klass::Sub->new���ƤФ��ȡ��ޤ�Klass::Sub::new()���ƤФ�뤬�������¸�ߤ��ʤ��Τǡ������ѡ����饹��Klass::new()���ƤФ�롣���������λ����������ϡ������'Klass::Sub'�Τޤޤ����椨��bless {}, 'Klass::Sub'���¹Ԥ��졢�����ѡ����饹��new()�ǡ����֥��饹�Υ��֥������Ȥ����������������롣

�����������ˤ�Class->new�ǤϤʤ���$object->new()�Ǵ�¸�Υ��֥������Ȥ������������Ȥ��⤢�롣�¤�Perl Best Pracitecs�ˤ�Damian Conway��$object->new()�����Ƥ��뤬�������Ǥ�DCONWAY�����Τ��꤬�����������ؤ��ơ�������ξ���Ǥ���褦�ˤ��Ƥߤ롣

sub new {
  my $thing = shift;
  my $class = ref $thing || $thing;
��bless {}, $class;
}

����ǡ�$object��Ʊ�����饹�Υ��֥������Ȥ���new()�����褿��

���������ɤ����ʤ���������ˤ�ꤿ�����ɤ�����Ф褤������������Ф褤��

sub new {
  my $thing = shift;
  my $class = ref $thing || $thing;
��bless { @_ }, $class;
}

����ǡ�Klass->new( name => 'foobar' )�ǽ������Ԥ��롣

���������ǥե�����ͤ������������Фɤ�����Ф褤������������Ф褤��

my %default = (name => 'anonymous');

sub new {
  my $thing = shift;
  my $class = ref $thing || $thing;
��bless { %default, @_ }, $class;
}

���������׵�Ϥ����³������������Ƥ��顢����˥����ѥ��饹�ν�����롼�����ƤӤ������ɤ�����Ф褤������������Ф褤��

package Klass;

sub new {
  my $thing = shift;
  my $class = ref $thing || $thing;
  my $self  = bless { @_ } => $class;
  $self->init() if $self->can('init');
  $self;
}

our %default = (name => 'anonymous');

sub init {
  my $self = shift;
  $self->{$_} = $default{$_} for keys %default;
  $self;
}

package Klass::Sub;
our @ISA = qw/Klass/;

our %default = ('̾��' => '�ʤʤ�');

sub init {
   my $self = shift;
   $self->{$_} = $default{$_} for keys %default;
   $self->SUPER::init();
}

new�ϥ١������饹�Τ����Ȥ��󤷡�init�ϷѾ�����������̤�Ȥ����櫓�Ǥ��롣;p>

�������������ޤǤ���С������������Ϥʤ�ʤ�����������

package Klass;

sub new {
  my $thing = shift;
  my $class = ref $thing || $thing;
  my $self  = bless { @_ } => $class;
  $self->init() if $self->can('init');
  $self;
}

our %default = (name => 'anonymous');

sub init {
   my $self = shift;
   $self->{$_} = $default{$_} for keys %default;
   $self->SUPER::init() if $self->can('SUPER::init');
   $self;
}

package Klass::Sub;
our @ISA = qw/Klass/;

our %default = ('̾��' => '�ʤʤ�');
*init = \&Klass::init;

��äƤߤ�Ф狼�뤬������Ϥ��ޤ��Ԥ��ʤ���������&Klass::Sub::init���ȼ���¸�ߤǤϤʤ�&Klass::init��ñ�ʤ���̾������������ξ�硢�ǽ�˿ƥ��饹��&Klass::init���ƤФ줿�Τ�Ʊ�����Ȥˤʤ롣����ϡ�init()������ͤ����������������

�¤Ϥ����ޤǤ������ꡣ�������餬���򤯤ʤ�Τ�������Entry�ؾ��롣���դ�ʤΤ������ճ��ȻȤ��������ä��Τ��̵����ˤ��Ƥߤ����衣

Dan the Fiftiesh Thirty Something