Featured image of post モダンPerl入門が届いた

モダンPerl入門が届いた

…というようなエントリーをちらほら見かけた

…というようなエントリーをちらほら見かけた。 で、今日、Amazonからうちにも届いた。

モダンPerl入門 (CodeZine BOOKS)

posted with amazlet at 09.02.12

牧 大輔 翔泳社 売り上げランキング: 210

Amazon.co.jp で詳細を見る

Mooseが面白そうなので、最初からソースを自分で入力してみることにした。 自分で書くほうがソースを何度も見る(読む)事にもなるし、実際に動くところを見るのもよさそうだったから。 「use Moose」で自動的にstrictになる、というのが不思議。 とはいえ、「use strict」を書かないのも気持ち悪く、微妙な気持ちだが、慣れればそんなものかも。 ちなみに既に正誤表が用意されているようです。 『モダンPerl入門』正誤表 そういえば、一つ動かないソースがありました。 p14

1
2
3
4
5
sub write_response {
my ($self, $client, $request) = @_;
print $client scalar(localtime), " ";
$self->SUPER($client, $request);
}

これを実行すると、クライアントからリクエストを打つとエラーで止まりました。

1
Can't locate object method "SUPER" via package "TimestampedEchoServer" at TimestampedEchoServer.pm line 11, <GEN1> line 1.

この間違いは単純なもので、正しくはSUPERの先に関数名が必要です。

1
2
3
4
5
sub write_response {
my ($self, $client, $request) = @_;
print $client scalar(localtime), " ";
$self->SUPER::write_response($client, $request);
}

まあ、Mooseを使うのであれば、before等を使うほうが良いでしょうね。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。