CPAN

Lexical::Types by VPIT

Vincent Pit氏のLexical::Typesがなんだかすごい。 SYNOPSISより: { package Str; sub TYPEDSCALAR { Some::String::Implementation->new } } use Lexical::Types; my Str $x; # $x is now a Some::String::Implementation object もともとPerlには"my Class…

use Smart::Comment;

引数の名前を知る方法 Data::Dumper::Names Perl Hacksで紹介されていたSmart::Commentsもいい感じです。 #!perl -w use strict; use Smart::Comments; sub f{ my($foo, $bar, $baz) = @_; ### $foo ### $bar } f(42, ['xyzzy']); __END__ 結果: ### $foo: 4…

Test::LeakTraceをCPANにあげた

Test::LeakTraceというアイデアを形にした。 http://search.cpan.org/dist/Test-LeakTrace/ 使用例: #!perl -w # example/leaked.pl use strict; use Test::LeakTrace; use Data::Dumper; my @refs = leaked_refs{ my %a; my %b; $a{b} = \%b; $b{a} = \%a;…

既存の特異メソッドモジュール

Perlで特異メソッドでは「標準モジュールにも特異メソッドを実現するものはない」と書いたが,そういえばPerl 5.10.0から標準モジュールになったObject::Accessorというものがあることを思い出した。これは直接特異メソッドを定義するのではないが,振る舞い…

Perlで特異メソッド

Ruby界隈ではあたりまえのように使われる特異メソッド*1だが,Perlでは組み込みでのサポートはなく,標準モジュールにも特異メソッドを実現するものはない。Class::MOP/Mooseの匿名クラスが似た用途を持っている*2が,オブジェクトの実装型に制約がある。た…

Devel::MROとExtUtils::Depends

少し前にXSからmro関数をポータブルに使えるようにするためのDevel::MROというモジュールを書いた。そこそこ用途はあるようで,chocolateboy氏*1から「ExtUtils::Depends使ったほうがいいんじゃない?」といわれたので使ってみた。 ExtUtils::DependsはExtUt…