WebService::RakuAPIのソース読んだ

勉強がてらRakuAPIのモジュール作ったわけですが、
伊藤さんのコードはどんな感じかな〜と読んでみました。


まず、知らないモジュールをいくつか発見。

  • Class::ErrorHandler
  • Readonly
  • URI
  • String::CamelCase

さっそくCPANに行ってこれらのモジュールを探してみる。


Class::ErrorHandler
どうやらエラーメッセージ用アクセサ?っぽい。
メソッドはセッタのerror($message)とアクセサのerrstr。
継承させてつかうみたい。


Readonly
use constantな働きをするモジュール。
use constantでは、

  • 配列とハッシュにはちょっと特殊な書き方しなくちゃいけない。
  • レキシカルスコープにできない。
  • コンパイル時にしか働かない?(Works only at compile time)
  • オーバーライド可能。

なのを、Readonlyではその辺カバーしてくれるらしい。
Perlベストプラクティス」に載ってるモジュールだそうな。


URI
これいいね。
今まで知らんかったのが残念。

my $uri = URI->new('http://rakuapi.ddo.jp/api');
$uri->query_form(
 keyword => 'PSP',
  sort => 'new',
  genre => 'book',
);

print $uri;

ってやると、

http://rakuapi.ddo.jp/api?keyword=PSP&sort=new&genre=book

こんな感じでURI生成してくれます。
超便利。


String::CamelCase
これもなかなか便利そう。
文字列を特定の形式に変換してくれます。
camelize($str)は、'some_keyword'を'SomeKeyword'に。
decamelize($str)は、'SomeKeyword'を'some_keyword'に。
wordsplit($str)は'some_keyword'を(some, keyword)、
もしくは'SomeKeyword'を(Some, Keyword)に。


モジュールの使い方だけでも大変勉強になりました。
続きは明日。