タグ

ブックマーク / gfx.hatenadiary.org (2)

  • Perlで特異メソッド - Islands in the byte stream (legacy)

    Ruby界隈ではあたりまえのように使われる特異メソッド*1だが,Perlでは組み込みでのサポートはなく,標準モジュールにも特異メソッドを実現するものはない。Class::MOP/Mooseの匿名クラスが似た用途を持っている*2が,オブジェクトの実装型に制約がある。たとえば,以下のコードは動かない。 #!perl -w use strict; use IO::File (); use Moose (); my $anonclass = Moose::Meta::Class->create_anon_class( superclasses => [qw(IO::File)], methods => { hello => sub{ my $self = shift; $self->print("Hello, world!\n"); }, } ); my $io = $anonclass->new

    Perlで特異メソッド - Islands in the byte stream (legacy)
    IMAKADO
    IMAKADO 2009/02/23
    [Class::MOP][gfx]特異メソッド
  • XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)

    XSとPurePerl(PP)両方の実装を持つモジュールは少なくない。たとえば: Data::Dumper List::Util/Scalar::Util (List-Scalar-Utils) List::MoreUtils Class::MOP Params::Util (>=0.35) Params::Validate Data::Util DBI JSON/JSON::XS Text::CSV/Text::CSV::XS このように一般的に使われることなのだが、その書き方は多様で定説がない。 Data::Dumperは関数を別の名前で用意し、実装を切り替えるインターフェイスを持つ。 List-Scalar-UtilsはXSがデフォルトで、さらにXSでのみ提供している関数があり、そのような関数はインストールの状態によっては利用できない。なお、そのためにTask::Weakenという特

    XSとPuerPerlの二つの実装を持つモジュールの書き方 - Islands in the byte stream (legacy)
  • 1