sironekotoroの日記

Perl で楽をしたい

オブジェクト指向Perlマスターコース 第3章 〜 第5章

「遅れてきたもの」の悲しみ

  • この「オブジェクト指向Perlマスターコース」は2001年の初版をつかっているのだけど、誤記?にぶつかった。
  • さてさて正誤表は、と思ったら出版社が無い
  • 正確には同じ名前の出版社はあるんだけど、もうプログラミング言語書籍の仕事してない
  • 正誤表無しは辛い・・・
  • けどまぁ、古代の古文書だって正誤表無いだろうし、分かる範囲でがんばってこう
  • そんで、「うちより後」にこの本を読む人のために気づいたところは書いておこう

    • でも、この本を手に取る位の人であればいらないんじゃ・・・とも思う
  • 今日見つけたのはこれ

  • 114p リスト3.1 クラスCD::Music
  • 誤、と思われる
    $self->{_room}  = $roomif $room;  
    $self->{_shelf} = $shelfif $shelf;
  • 文脈からいってこうだろうな
    $self->{_room}  = $room  if $room;  
    $self->{_shelf} = $shelf if $shelf;
  • 123p 118pの name から get_name への変更が反映されてないので直す
  • 128p use Carp 'croak' が必要
  • 129p AUTOLOAD から呼び出したチェック用サブルーチン _accessible がうまく動かず、常に偽を返す
    • サブルーチン accessble が参照するハッシュ %attrs を参照できていない模様
    • この本が出た 2001年頃の Perl では動いたのかなぁ
    • とりあえず、チェック用サブルーチンの中にハッシュを入れる事で動きはしたけど、カプセル化が出来ているかどうかは不安がある
{

    sub _accessible {
        my %_attrs = (
            _name      => undef,
            _artist    => undef,
            _publisher => undef,
            _ISBN      => undef,
            _tracks    => undef,
            _rating    => undef,
            _room      => undef,
            _shelf     => undef,
            _incr      => '1',
        );

        return exists $_attrs{ $_[1] };
    }

}

第4章、第5章

  • だんだん理解できないところが増えてくる
  • それでも一通りは読む
  • 所々、現在のPerlでは推奨されない仕組みについての解説があったりする
    • 例えば第4章で出てくる擬似ハッシュ
  • 第5章では、正規表現リファレンスをオブジェクトに格納して使い回す、というのがあった
  • 既存の機能(正規表現)を自分好みに作り替えていいんだ・・・という当たり前だけど、いままで気づけなかった感動があった
  • プログラミングは自由だなぁ