OOP

C:\>perl -e "sub makeCounter { my $class = shift; my $self = {}; bless $self, $c
lass; $self->{count} = 0; return $self; } sub push { my $self = shift; $self->{c
ount}++; print $self->{count}; return $self; } main->makeCounter()->push()->push
()->push();"
123

とりあえずカウンタを作ってみた。

sub makeCounter {
    my $class = shift;
    my $self = {};
    bless $self, $class;
    $self->{count} = 0;
    return $self;
}
sub push {
    my $self = shift;
    $self->{count}++;
    print $self->{count};
    return $self;
} 
main->makeCounter()->push()->push()->push();

はまったところ。blessをbressと書いていて不思議なエラー。return $self;をreturn self;と書いていてselfってパッケージはないぞ、ってエラー。
後者は return self;がbarewordで文字列を返して、blessedでない文字列に大して->を使ったのでパッケージ名と解釈されたと言うことかな。