…というようなエントリーをちらほら見かけた。 で、今日、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等を使うほうが良いでしょうね。