今日出会ったCPANモジュール
これはまた便利というか面白いモジュール。
Perl には wantarray という組み込み関数がある。
これは,メソッドの呼出し側が戻り値としてリストコンテキストを要求しているのか判定する時に使用する。
Contextual::Return モジュールはリストだけでなく,呼出し側が要求している戻り値のコンテキストを色々と判定できる。
# SYNOPSIS use Contextual::Return; use Carp; sub foo { return SCALAR { 'thirty-twelve' } BOOL { 1 } NUM { 7*6 } STR { 'forty-two' } LIST { 1,2,3 } HASHREF { {name => 'foo', value => 99} } ARRAYREF { [3,2,1] } GLOBREF { \*STDOUT } CODEREF { croak "Don't use this result as code!"; } ; } # and later... if (my $foo = foo()) { for my $count (1..$foo) { print "$count: $foo is:\n" . " array: @{$foo}\n" . " hash: $foo->{name} => $foo->{value}\n" ; } print {$foo} $foo->(); }
このモジュールの作者は,Damian Conway 先生であった。
http://b.hatena.ne.jp/{はてなID}/favorite.rss 空!空!空!空〜
以下の問題は,2008/11/27現在解消されましたのでご注意下さい。
(以下,古い記事)
昨日から新しくなった,はてなブックマークを早速利用しているのだが...
はてなブックマークのお気に入りのフィードの内容が何故か空なのだが...
http://b.hatena.ne.jp/h3x/favorite.rss
な・ぜ・だ!?
お気に入りはいくつか登録してあるのに
スリープ処理
Perlの組み込み sleep 関数は,スリープ時間を浮動小数点で指定した場合であっても,整数単位の秒数でのみ,プログラムを一時停止するらしい。
sleep 1.5; # sleep(int(1.5))と同じで,1秒間スリープする sleep 0.5; # sleep(int(0.5))と同じで,0秒間スリープする!
1秒未満のスリープを実現するには,Perl5.8以降で標準モジュールとなっている Time::HiRes モジュールを利用すればよいらしい。
use Time::HiRes qw( sleep usleep ); sleep 0.5; # 0.5秒間スリープする usleep 500_001; # 0.500001秒間スリープする (ミリ秒単位で指定できる)
See Also
今日出会ったCPANモジュール
このモジュールを使用すると,サブルーチンから返される値をすべて記憶し,次回サブルーチンが同じ引数で呼び出されたときに,同じ値を(再計算せずに)直ちに返してくれるようになる。
# SYNOPSIS use Memoize; memoize('slow_function'); slow_function(arguments); # Is faster than it was before
このモジュールの作者はかの有名な MJD でした。
Higher-Order Perl: Transforming Programs with Programs
- 作者: Mark Jason Dominus
- 出版社/メーカー: Morgan Kaufmann
- 発売日: 2005/03/14
- メディア: ペーパーバック
- クリック: 21回
- この商品を含むブログ (30件) を見る
miyagawa さん products の remedie を使ってみた
- まず,ソースを取ってくる。
svn checkout http://remedie.googlecode.com/svn/trunk/
- remedie/HACKING を読む。必要な事は全て書かれている。
- 依存モジュールを以下のコマンドで調べてインストールする。
ack -h ^use lib | sort -u | perl -Ilib
- 以下のコマンドで,SQLite の DB を初期化する。
perl -Ilib -MRemedie::DB::Schema -e 'Remedie::DB::Schema->install'
- DBの初期化が済んだら,以下のコマンドでサーバを起動する。
perl -Ilib ./bin/remedie-server.pl
- http://localhost:10010/ にアクセスしてみると・・・
- "Can't load subscription" とか表示された場合は,~/.remedie/error.log にエラー内容が出力されていなか確認する。おそらく依存モジュールが見つからない等のエラーメッセージが書かれているはず。
参考