2010-01-01から1ヶ月間の記事一覧

金時豆 2 cup

暮れにやって以来、久々に豆を煮た。甘さ控えめに仕上げた。

AnyEvent + Coro での並行ダウンローダの習作

AnyEvent と Coro を使って、WEB から非同期に並行ダウンロードするプログラムの習作を作ってみた。http://kaede.to/~canada/doc/wiser-clawer-sample-using-coroをだいぶ参考にさせてもらっている。紹介されている非同期クローラはとてもいいのだが、自分が…

AnyEvent my $w; $w = ... と書くわけ

次のプログラムでは、$w2 のスコープはブロックの中だけなので、ブロックを抜けたときに undef され、timer watcher $w2 はキャンセルされる。 use strict; use warnings; use AnyEvent; my $cv = AnyEvent->condvar; my $w3 = AnyEvent->timer( after => 3,…

AnyEvent watcher のキャンセル実験

AnyEvent の watcher をキャンセルする実験。今から 2 秒後の発火を待つ timer watcher を、今から 1 秒後にキャンセルしてみる。 use strict; use warnings; use AnyEvent; my $cv = AnyEvent->condvar; my $w3 = AnyEvent->timer( after => 3, cb => sub {…

Coro::Channel を使った回文素数ジェネレータを作ってみる修行

Coro::Intro を読んで Coro::Channel について知ったので、これを使ったプログラムを書いてみることにした。ネタとしていいものが思い浮かばなかったので、回文素数 (回文数である素数) を生成するジェネレータを無駄に作ってみた。

Coro::State を使って双子の素数ジェネレータを作ってみる修行

大量の URL からファイルを持ってきて解析するプログラムを作っている。プロセスを並行して走らせ、それぞれが LWP を使ってファイルをダウンロードしている。で、これは Coro + AnyEvent を使うと速くなるよ、という噂を聞いたので Coro + AnyEvent を勉強…

if と elsif の条件節の中の変数のスコープ

use strict; use warnings; my $x = 2; my $y = 4; # (1) line 5 if ((my $y = 2) == $x) { # (2) line 6 my $y = 5; # (3) line 7 print "x=$x, y=$y\n"; } elsif ((my $y = 3) == $x) { # (4) line 10 print "x=$x, y=$y\n"; } else { print "x=$x, y=$y\n…

テキストファイルの n 行目から m 行抜き出すワンライナー

テキストファイルの n 行目から m 行抜き出すワンライナー。次のは 5000 行目から 1011 行(コメントを受けて修正)抜き出すもの。 $ n=5000;m=10;e=$(($n+$m));sed -n -e $n,${e}p -e ${e}q ファイル名 私が sed を使うのはこれくらいが限度で、とても sed 遣…

CPAN でインストールしたもののリストを表示するワンライナー

CPAN でインストールしたもののリストを表示するワンライナー。 $ perl -MExtUtils::Installed -e '$i=ExtUtils::Installed->new;print "$_ ".$i->version($_)."\n" for $i->modules;' 参考 年越しそばと初詣は絶対に欠かせない: CPANでインストールしたモジ…

qw の中身の先頭や末尾がホワイトスペースだった場合、先頭や末尾に空文字列が入っているとみなされるわけではない

$ perl -e 'print "[$_]\n" foreach qw/ a b c /;' [a] [b] [c] であって、 $ perl -e 'print "[$_]\n" foreach qw/ a b c /;' [] [a] [b] [c] [] ではない。ま、当たり前か。

Perl の標準モジュールかどうかを確認する方法

あるモジュールが標準モジュールか、いつからか、どのバージョンなのかを調べるには Module::CoreList で。 C:\Users\takeyuki>perl -MModule::CoreList -e "print Module::CoreList->first_release('Module::CoreList');" 5.009002 Module::CoreList 自体が…

ディレクトリ階層を保存してファイルを移動

あるディレクトリ (たとえば /tmp/a/b/c/) の下、いくつかディレクトリを掘った下にあるファイルがある (たとえば、/tmp/a/b/c/x/y/z.txt)。このファイルを別のディレクトリ (たとえば /tmp/a/d/e/) の下に移動したい。ただし、元ディレクトリ以下のディレク…

HTML::TreeBuilder::no_space_compacting

HTML::TreeBuilder で HTML を parse したとき、文字列中の改行コードは半角スペースに変換される。pre タグの中の改行コードはそのまま残る。正確に言うと、pre タグと textarea タグの中以外のホワイトスペースの連続は、半角スペース一個に変換される。 …

2010-01-02の読みさし

もっと自由に母乳育児―マニュアルより赤ちゃんとの「対話」を (健康双書):60% もっと自由に母乳育児―マニュアルより赤ちゃんとの「対話」を (健康双書)作者: 山西みな子出版社/メーカー: 農山漁村文化協会発売日: 1995/07/01メディア: 単行本 クリック: 1回…