Bulkfeeds API
gorou さんがうごかねっつってるので触ってみた。
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
use FileHandle;
use Readonly;
Readonly my $url => 'http://bulkfeeds.net/app/terms.xml';
Readonly my $api_key => 'my key';
my $ua = LWP::UserAgent->new;
# read test.txt
my $text = q{};
if ( my $fh = FileHandle->new('test.txt') ) {
$text = join q{}, <$fh>;
$fh->close;
}
else {
die 'text read error';
}
# call api
my $res = $ua->request(POST $url, [ apikey => $api_key, content => $text, ]);
if (not $res->is_success) {
die $res->status_line;
}
else {
print $res->status_line, qq{\n\n};
print $res->content;
}
で、結果
200 OK
<?xml version="1.0" encoding="utf-8"?>
<terms>
<term>クリッパーズ</term>
<term>臥</term>
<term>NBA</term>
<term>プレシーズン</term>
<term>初戦</term>
<term>開幕</term>
<term>田</term>
<term>アシスト</term>
<term>リバウンド</term>
<term>サンズ</term>
<term>ユーイング</term>
<term>リビングストン</term>
<term>95</term>
<term>勇</term>
<term>4Q</term>
<term>俊敏</term>
<term>>?</term>
<term>無得点</term>
<term>得点</term>
<term>ベンチ</term>
</terms>
動いてる! あーこれおもしろいかも。
SQL::Abstract
サーバーの SQL::Abstract が古かったらしく、タグの AND 検索がなんか OR 検索になってた。最新版にしたら直った。
つーか Class::DBI::Sweet はほんとに Sweet だなぁ。手放せないよ。
wantarray
関数の戻り値にリストが期待されているかどうかを調べるビルドイン関数。
これを使えば Class::DBI の retrieve_all みたいに
my $ret = CDBI::MyTable->retrieve_all;
とすると $ret
にはイテレータが入り、
my @ret = CDBI::MyTable->retrieve_all;
とすると @ret
には実際のデータの配列が返されるような関数を書ける。
Text::Ufyu
Markdown おかしいので
kyoさんの Blosxom 用プラグイン ufyu をコピペして Text::Ufyu とか作ってみる。
前者はkyoさんのをそのままコピペしてモジュール化したやつ。後者は自分好みにいろいろ変更したやつ。帰ったらCLONをこれベースに切り替えよう。
Catalyst
search.cpan.org: Andy Grundman / Catalyst-5.49_01
メンテナまた変わったんだ。
Catalyst設定をばらばらに書くのが嫌
これをすべて MyApp の config で行うには MyApp::(M|V|C)::Foo などというコンポーネントモジュールの new を以下のように定義してやれば良い。
sub new {
my $self = shift;
$self->config($_[-1]);
$self->NEXT::new(@_);
}
このようにしておけば MyApp で
MyApp->config(
'M::Foo' => {
some => 'settings',
},
);
などとすれば MyApp::M::Foo の設定を MyApp 内で行える。Config::YAML と併用すれば外部ファイルの使用もOK。
emacsにyaml-modeあれば使う気になるんだけどなぁ。。