タグ

ブックマーク / blog.livedoor.jp/xaicron (3)

  • にひりずむ::しんぷる - 死んでほしくない人のための Sub::Retry

    Sub::Retry はクールでクレバーなモジュールなのですが、retry の条件が exception のみでちょっと悲しかったので、retry 条件をカスタマイズ出来るようにしてみました。すでに取り込まれて、0.03 としてリリースされています。 Sub-Retry-0.03 - FrePAN ユースケース としては、Cache::Memcached::Fast とかで set とか get に失敗したときに retry するとかが挙げられます。 第4引数に coderef を指定することで、retry 条件を変えられます。 retry したいときは、true を返し、そうでない場合は(つまり、成功した場合は)false を返すようにします。default は 以前の挙動と同じです。 coderef の引数は return value と同じなので、その結果如何で処理を切り替えることが

  • にひりずむ::しんぷる - 親プロセスと子プロセスでデータを送受信する方法のメモ

    pipe() とか socketpair() とか色々方法はあるけど、素直に IO::Pipe 使っとくと簡単便利。コアモジュールですし。 use strict; use warnings; use IO::Pipe; my $pipes = []; my $children = []; for my $i (1..10) { push @$pipes, my $pipe = IO::Pipe->new; my $pid = fork; if ($pid) { # parent $pipe->reader; push @$children, $pid; next; } # child die $! unless defined $pid; $pipe->writer; print {$pipe} "pid: $$, index: $i\n"; exit; } for my $pid (@$

    wittro
    wittro 2012/07/06
    なるほど。解決できた。ありがとうございますありがとうございます。
  • にひりずむ::しんぷる - Git ライクなコマンドライン引数を処理できる Getopt::Compact::WithCmd を書いた

    近いうちに水性ペンを買います。(挨拶) コマンドライン引数を処理するモジュールっていっぱいありますね!ありすぎてどれがいいかよくわからないし、「まぁぶっちゃけ Getopt::Long さえあれば大体いいよね!コアだし!」って感じですが、まぁなんか書いた。 xaicron's p5-Getopt-Compact-WithCmd at master - GitHub App::Cmdとかありますが、あれはモジュール化しなきゃいけなくて、大変めんどうです。*1 俺は一枚のスクリプトに書きたいんだ!! サブコマンド前提 usage は自動生成 default や required の指定が可能 依存が少ない(かも)*2 という感じです。最初は、Getopt::Compactを継承して書いてたんですが、途中からなんかあびゃーってなったのでやめました。使い方は大体一緒ですが。 Getopt::Com

    wittro
    wittro 2012/05/07
    しらんかった。便利だなー。
  • 1