オブジェクト
オブジェクト指向なモジュールの書き方を勉強したけど、忘れてた。
プログラミングPerlのコードをちょこっと変えたものを書いてみる。
モジュール
package Person; use strict; #引数を受け取るコンストラクタ sub new { my $invocant = shift; my $self = bless({}, ref $invocant || $invocant); $self->init(@_); return $self; } #初期化処理 sub init { my $self = shift; $self->name(shift) if (@_); } #クロージャを使ってクリーンかつ効率的に for my $field (qw(name)) { my $slot = __PACKAGE__ . "::$field"; no strict "refs"; *$slot = sub { my $self = shift; $self->{$field} = shift if @_; return $self->{$field}; } } 1;
テスト
use strict; use Person; my $kotaro = Person->new("kotaro"); print $kotaro->name, "\n";