タグ

ブックマーク / ks0608.hatenablog.com (3)

  • cpan module を並列でインストールする - skaji's blog

    先日行われた Gotanda.pm #5 でも発表させていただいたが、まさしく experimental な cpan client cpm を作った。 github.com Why new? cpan module の install にはいつも cpanm を使っており そのシンプルさと安定性には感心するばかりである。 が、cpanmにも不満がないわけではない。 perlである程度のことをやろうとすればすぐにcpan moduleの依存は 100を超える。 そういった場合、cpanmは直列でcpan moduleをインストールしていくため かなりの時間がかかる。 これをなんとかしたい。 Features of cpm cpm は如何に速くcpan module をインストールするか、しか考えていない。速くするために以下のようにしている。 cpanm を並列に使って cpan modul

    cpan module を並列でインストールする - skaji's blog
  • perl で複数のプロセスからログを吐くときは :unix layer で開いてもいい - skaji's blog

    File::RotateLogs が大変便利でよく使っているのだが、これはファイルへ書き込むときに print を呼んでいる。 一方 にひりずむ::しんぷる - perl で復数のプロセスからログを吐くときは syswrite または flock すべし によると長いログを吐くときは syswrite にしないと混ざるとある。 よって File::RotateLogs も実は混ざることがあるのかなと思い、複数プロセスから長いログを吐きまくってみたが一向に混ざらなかった。 いろいろ調べた結果、open layer に最も低級な layer である :unix を指定すれば print 時も 1 つの write(2) になるようだった。 > cat test.pl open my $fh, ">:unix", "test.txt"; print $fh "a" x (1024 * 100);

    perl で複数のプロセスからログを吐くときは :unix layer で開いてもいい - skaji's blog
  • Perl - リファレンスの説明(1) - skaji's blog

    Perl 初心者が初心者なりにリファレンスを説明してみる。「初めてのPerl」を読み終わって、いざ何かやろうと思ってもリファレンスが分かってなかったら何もできなかった。 リファレンスとは、厳密には知らないけど、変数の置いてある場所のアドレスのことと理解しよう。C 言語のポインタと同じだと思ってもいんじゃないだろうか。ただしリファレンスに1を足して次の要素が得られるといったことはありません。 はじめてリファレンスを学んだとき $$ref[0] とかが出てきて区切りが分からなくて理解しにくかった。よってこの説明では冗長だけど ${ $ref }[0] のように書く。 以下の説明では括弧の種類、つまり丸括弧()、ブラケット[]、ブレース{} の違いを意識しながら読んでほしい。 目次 復習 $, @, %, & 復習 ループ リファレンス リファレンスを使って多次元配列 参考文献 深沢千尋, すぐ

    Perl - リファレンスの説明(1) - skaji's blog
    issm
    issm 2013/03/23
  • 1