perl
噂のsleepsort書いてみた。AnyEvent->timer の戻り値捨てると動かないんだなぁとか。 #!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use AnyEvent; sub sleepsort { my (@args) = @_; my $cv = AnyEvent->condvar; my (@sorted, @timers…
背景 コマンドラインで動くPerlのプログラムをTDDで作ろうと思い、同じくコマンドラインプログラムであるApp::cpanminusのテストの書き方を真似して書いていた。 問題 でもユーティリティ関数で呼んでいるsystem()に引数が渡らない!なぜ!><単純化すると…
base.pm のソース眺めてたら constant.pm は遅いからと自前でインライン関数(?)を定義していた。 # constant.pm is slow sub SUCCESS () { 1 } sub PUBLIC () { 2**0 } sub PRIVATE () { 2**1 } sub INHERITED () { 2**2 } sub PROTECTED () { 2**3 } で、…
MySQL + Perl + DBIx::Class Databaseの文字エンコーディングをUTF-8 各テーブルのエンコーディングもUTF-8 それでも化ける模様。 以下の設定が必要。 my $connect_info = ['dbi:mysql:dbname:hostname', 'username', 'password']; my $schema = MySchema->c…
Moose使ってて、何か警告いっぱい出るようになったなぁと思ったらタイポして "no moose" なんてやってただけだった。エラーにはならないから見逃しがち。(いや警告もちゃんと直しましょう) 出てた警告: Subroutine throw_error redefined at /Users/naoto/pe…
Starman のコード読んでみたのでまとめ。 Starmanとは Plack/PSGIに対応したPerl製のWeb Server。 Perlと言えばこの人、miyagawa さん作。 Plack/PSGI に関してはこのへんとか。 バカでもわかるPlack/PSGI - JPerl Advent Calendar 2009 第1回 PSGI/Plack―フ…
package Lazy::Camel; use Moose; use feature qw(say); sub speak { say $_[1]; } __PACKAGE__->meta->make_immutable; no Moose; package main; Lazy::Camel->speak("Perl");
何これ便利1$ とか 2$ とかで文字列に続く引数の1番目、2番目を指定できる。perldoc -f sprintf より: printf '%2$d %1$d', 12, 34; # prints "34 12" 1個の引数を2回使うこともできる。CPAN本にあった例(P.155): use Text::Xslate qw(html_escape); # ... s…
インストールされてるCPANモジュールの一覧を出す % perl -MExtUtils::Installed -e 'print "$_\n" for ExtUtils::Installed->new->modules' > modules.txt cpanmに食わせてインストールできる % cpanm < modules.txt Unicode解読 % perl -MEncode=encode_ut…
たくさんあって楽しすぎるからメモっといて後々調べていく。 Web Application Framework とか Catalyst Catalyst | Perl MVC web application framework Mojolicious Mojolicious - Perl real-time web framework Mason Mason (Perl) - Wikipedia Jifty Jift…
% curl -LO http://xrl.us/perlbrew % perl perlbrew install % rm perlbrew % ~/perl5/perlbrew/bin/perlbrew init (add this in .zshrc: 'source ~/perl5/perlbrew/etc/bashrc') % perlbrew install perl-5.12.2 % perlbrew switch perl-5.12.2 (installed…