Subscribed unsubscribe Subscribe Subscribe

メソッドが定義されたファイル名と行番号を取得するコマンドを作った

$ source_location.pl File::Spec canonpath FILENAME: /Users/Cside/.../File/Spec/Unix.pm LINE: 71 親クラスまでたどった大元の定義位置を返すので、クラス階層が複雑なときにデバッグに役立つ。 cpanm UNIVERSAL::source_location_for するとコマンドが…

「 bless は重い」は本当か

よく「 Perl の bless() は重いので new() しまくるとパフォーマンス悪化につながる。シングルトン化せよ」みたいなのを聞く(ような気がする。気のせいかも)。 なので、 ループ中で都度 new する方法 インスタンスを使いまわす方法 で速度を測ってみた。 u…

Test::Base::SubTest というモジュールを作った。またはテストケースとテストコードは分離されていたほうが嬉しい話

自分は Test::Base が好きでよく使うのだけど、subtest 的な、テストのグルーピングができないのがずっっっと不満だったので、Test::Base::SubTest というモジュールを書いた。 https://metacpan.org/release/Test-Base-SubTest https://github.com/Cside/Te…

Data::Validator のようにコマンドラインオプションをパースするやつを作った

Getopt::TypeConstraint::Mouse - A command line options processor uses Mouse's type constraints - metacpan.org - Perl programming languagein your script #!perl use Getopt::TypeConstraint::Mouse; my $options = Getopt::TypeConstraint::Mouse->…

MySQLのfrom_unixtime(), unix_timestamp()をPerlから使うモジュール作った

集計バッチやなんかを書くときに、MySQLのDateTime型(%Y-%m-%d %H:%M:%S)とUNIX timeを相互に変換したくなるときがある。要するにMySQLでいうfrom_unixtime()関数、unix_timestamp()関数にあたるものが欲しい。ので、それらをPerlで使えるやつを書いた。ht…

Perlで補完のきくインタラクティブシェル

すなわちRubyでいうpry相当のもの。Rubyからきた人に聞かれることぶっちぎり一位が「Perlにpry相当のもの無いの?」なので書きます。Perlのインタラクティブシェルは たくさんある のだけれど、自分は Devel::REPL の re.pl を使っているのでそれを推したい…

t/foo/foo.tのように階層のあるテストはデフォルトではmake testの対象外

CPANモジュールガイドのModule::Installの項を眺めていたらびっくりした。僕はこれ今日まで知りませんでした。デフォルトでは (t|xt)/*.t が対象。再帰的ではない。t/foo/foo.tのように階層を持ったテストを含めるにはMakefile.PLに以下の一行を追加する必要…

quickrun.vim + Project::Libs の組み合わせが便利

VimでPerlを書いている人なら、編集中のテストでquickrunして「Can't locate ...」が出てやる気をくじかれた経験があると思います。パス通ってないからそりゃこうなりますね。で、そういうときは、Vimを抜けてプロジェクトのトップディレクトリでproveするか…

PerlのWeb開発初心者のためのTips について喋った

社内の同期を対象にプライベートにやったものだけど、公開してまずい内容は含めてないので公開します。PerlのWebプログラミング効率化のTips - Csideグループ一般的なノウハウをまとめたかったのだけど、だいぶ僕の好みも入ってしまったかな…。

開発時のPlackのアクセスログフォーマットを指定する

Plack::Middleware::AccessLogは、開発環境(PLACK_ENV=development)の場合、P::M::Lint や P::M::StackTrace とともに「オプションなしで」Plack::Runner によって自動で読み込まれる。つまりログのフォーマットが指定できない。app.psgi で enable 'Acces…

Sub::Inspector というモジュールを書いた

https://metacpan.org/module/Sub::Inspectorcoderefから以下の情報を簡単に取り出すモジュールです。 アトリビュート プロトタイプ 元のメソッドが定義されているファイル 元のメソッドが定義されている行番号 名前 いずれも標準モジュールの B.pm を使えば…

CPAN Searchにテストやバグレポートの情報を表示するChrome拡張

CPANソムリエになる方法を読んで以降、モジュールを選ぶ際には テストの結果(こけてないか) バグレポートの数 最終更新日が古くないか t/ディレクトリ内のテストが充実しているか などを確かめるようにしているのですが、いちいち各モジュールの個別ページ…