デリファレンスのオーバーロード

Catalyst のぷらぎんかいてて overload もデリファレンスとかでつかうならいいかなとか思った。

普通の演算子のオーバーロードは C++ とかだとかっけーんだけど、Perl でやるとうまく使わない限りなんか微妙で好きじゃなかったんだけど。デリファレンスのそれは結構なかなかかも。

#!/usr/bin/perl

use strict;

package OverloadTest;

use overload (
    q{""} => sub { shift->{text} },
    '${}' => sub { shift->{scalar} },
    '@{}' => sub { shift->{array} },
    '&{}' => sub { shift->{function} },
);


sub new {
    my $self = bless {}, shift;

    $self->{text}     = 'fooooooooo';
    $self->{scalar}   = \'heh ;)';
    $self->{array}    = [qw/blah blah blahhh/];
    $self->{function} = sub { "bar!!!!" };

    $self;
}


package main;
use Data::Dumper;

my $ol = OverloadTest->new;

print Dumper "$ol";
print Dumper $$ol;
print Dumper &$ol;
print Dumper [ @$ol ];

こんなの。String参照とデリファレンスのオーバーロード。

wantarray みたいな用途に使えそう。

ちなみに上のの出力は

$VAR1 = 'fooooooooo';
$VAR1 = 'heh ;)';
$VAR1 = 'bar!!!!';
$VAR1 = [
          'blah',
          'blah',
          'blahhh'
        ];

こうなる。

by typester / at 2005-12-03T01:04:00 / perl / Comment

XML::Simpleのあれ

って常識だとおもってたんですけど!!

by typester / at 2005-12-01T04:08:00 / perl / Comment

cpan-upload

めちゃ便利!

by typester / at 2005-11-24T00:37:00 / perl / Comment

by typester / at 2005-11-23T14:37:00 / perl / Comment

File::Temp

by typester / at 2005-11-23T02:16:00 / perl / Comment

MIME::Lite::TT::HTML::Japanese

horiuchi さんの MIME::Lite::TT::Japanese を改造というか参考というかして、おんなじ様な感じで HTML メール作れるやつを作った。

by typester / at 2005-11-19T19:26:00 / perl / Comment

遅レスにまじれす

Rails びいきの Catalyst ファースト・インプレッション にこっそりコメントしてみる。

開発スピードがめっちゃ速い

なんつっても開発者がにーt

非互換あるし。lib/appname/C/ -> lib/appname/Controller/ とか。

C → Controller てのは Helper で生成されるデフォルトのものが変わっただけで、今も昔もどちらの名前でもちゃんと使える。

-short オプションつければ従来どおり。

5.33 → 5.5 は Catalyst 本体内部をいじってるようなプログラム以外のアプリであれば問題なくそのまま動く。

人柱感

まだまだ開発者がすさまじくアクティブなので仕様がかわりまくるというのがありますね

なんでスクリプトに appname が全部ついているんだろう? だるー。いらんだろ。

make install したとき用です。でも正直やるやついねーので微妙です。

このへんはもう少し話し合うべき。Catalystアプリのインストールと配布方法について。(今のMakefileはひどすぎる)

root以下云々

ファイル名を省略するようなプラグインもあるし、暗黙の了解とかもないよ。好きなように使うよ。

URI とファイルパス・関数名が連動してない。

これも人それぞれですよね。連動さすこともできるし、全部1パッケージに収めることもできるし。

そんな感じで。

Rails びいきっていうわりにあんまりたたいてない!

by typester / at 2005-11-18T01:20:00 / perl · catalyst / Comment

perldoc perllocal

モジュールのインストール履歴表示。

by typester / at 2005-11-16T18:38:00 / perl / Comment

Module::Build

colinux (sid) では普通に使えてるが自鯖 (sarge) だと make distmeta が通らない。

追おうかと思ったけど、Developer Release 使ったら動いたからいいや。

つかもー5時かよ、やべー。

by typester / at 2005-11-08T05:05:00 / perl / Comment

複数dc:subject

はてなブックマークみたいな dc:subject が複数ある RSS は XML::Feed とか XML::RSS じゃうまくパースできないので超ハックしてみた。

while ($rss =~ s!<dc:subject>(.*?)</dc:subject>\s*<dc:subject>(.*?)</dc:subject>!<dc:subject>$1, $2</dc:subject>!gs) { }

とかしてから渡す(ぉ

かっこよすぎ。もっとうまい書き方ないのかな。

でもいまさら RSS パーサーとかかくのめんどいしね。XML::Simple ですらめんどい。

by typester / at 2005-11-05T00:32:00 / perl · rss / Comment

21 22 23 24 25 26 27 28 29 30

(Page 28 of 30)