[僕] ラクダ本 Vol1 第3版の誤植?

僕ト云フ事

2005年08月27日

[book][perl] ラクダ本 Vol1 第3版の誤植?

プログラミング perl VOLUME1 第3版に誤植発見。
p394 「12章 オブジェクト」の「12.7.3 オートロードによってアクセサを生成する」に登場する、Person モジュールの24行目。

croak "$self not an object" unless ref ($invocant);

は、

croak "$self not an object" unless ref ($self);

ですよね?細かい話だけど。

プログラミングPerl〈VOLUME1〉
ラリー ウォール ジョン オーワント トム クリスチャンセン Larry Wall Jon Orwant Tom Christiansen 近藤 嘉雪
オライリー・ジャパン (2002/09)
売り上げランキング: 17,736
おすすめ度の平均: 4.6
5 CGIを自在にこなす第一歩の書
5 Perl文法の仕組みを詳細に知りたい人の本
5 ラクダが踊る

以下、モジュール全部。(コメント抜き:p
僕が誤字脱字してたらごめんなさいw

package Person;
use Carp;

my %Fields = (
    "Person::name" => "unnamed",
    "Person::race" => "unknown",
    "Person::aliases" => {},
);

use subs qw(name race aliases);

sub new {
    my $invocant = shift;
    my $class    = ref($invocant) || $invocant;
    my $self = { %Fields, @_ };
    bless $self, $class;
    return $self;
}

sub AUTOLOAD {
    my $self = shift;
    
    croak "$self not an object" unless ref ($self);
    my $name = our $AUTOLOAD;
    return if $name =~ /::DESTROY$/;
    unless ( exists $self->{$name} ) {
        croak "Can't access `$name' field in $self";
    }
    if ( @_ ) { return $self->{$name} = shift }
    else { return $self->{$name} }

}

トラックバック

このエントリーのトラックバックURL:
http://vkgtaro.jp/cgi-bin/mt/mt-tb.cgi/468

コメント

# PIA [TypeKey Profile Page] (2005年08月27日 03:17)

確かにref($self)っすね~w
AUTOLOADって便利ですよねー。こないだ公開したやつで思いっきり使ってますわ。

# 海賊たろ [TypeKey Profile Page] (2005年08月27日 13:40)

やー、PIA さんのモジュール読んでて、AUTOLOAD の仕組みよく知らないやーと思ってラクダ本読み返したんですよw
確かに便利そうです。コピペの練習が減りそうww

コメントを投稿