Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

2012-04-01から1ヶ月間の記事一覧

別の場所で読み込んだモジュールが他でも無条件に使えるのはイヤなところである

まあPerlに限らずなんだけど。 Cacooで画像作ってみた。 ここでB.pmはCに関してまったく無関係のはずなんだけど、実際にはCパッケージの関数を使用できる。 どうも他人の庭の道具を無断使用しているみたいで気持ち悪い。 このへんも完全にスコープ切り分けで…

Text::Hamlの実行コードをキャッシュして高速化した話

Text::Haml - search.cpan.org Perl版HamlのText::Hamlだが毎回$haml->render_fileで 構文解析→出力用package作成→出力用サブルーチン実行 という手順を踏んでいるので、Hamlファイルが大きくなればなるほど、 実行速度がどんどん遅くなっていやだなーと思っ…

ごく一部の頭のいいアホにしか読めない文章のつくりかた

$str =~ tr/TIESAO/713540/; ごく一部の頭のいいアホにしか読めないらしい on Twitpic

コンパイル時にリテラルだと最適化してくれる組み込み関数

length('rightgo09')みたいにすると、コンパイルの時点で9にしてくれていることを知った。 my $len = length('rightgo09'); $ perl -MO=Deparse len.pl my $len = 9; len.pl syntax OK演算結果なんかはしていると聞いてたけど、関数でもなるのかーへーと思っ…

printとstatでつまづいた話

statの挙動なんだっけーと思いつつ以下のようにしたらエラーになった。 $ perl -le 'print (stat("test.pl"))[9]' syntax error at -e line 1, near ")[" え、statは配列を返すからそのスライスってことであってるでしょーと文句を言いたくなったけれど、 右…

Text::Hamlでできること、できないこと

RubyのHamlのつもりでPerlのText::Hamlを使うとつまづいてしまうメモ。 http://search.cpan.org/~vti/Text-Haml-0.990104/lib/Text/Haml.pm インデントは半角スペースのみ インデントにタブは使用できず、常に半角スペースでインデントしないとだめ。 いきな…

Mo.pmを読んだ

こんばんは。 面白そうだったのでMoを読んでみた。 http://search.cpan.org/~ingy/Mo-0.30/lib/Mo.pod Moとは Moose is huge. Moose led to Mouse led to Moo led to Mo. M is nothing. Mo is more. Not much.Moose、Mouse、Mooからできたlessなやつ。 VERSI…

SUPERは@ISAを探ってくれてるわけではない

これが動かなかったので調べたメモ。 strictはなしで。 *{"Foo::aiueo"} = sub { print "aiueo.\n" }; # Fooクラスのaiueoメソッド *{"Bar::new"} = sub { bless {}, "Bar" }; # Barクラスのコンストラクタ push @Bar::ISA, "Foo"; # BarはFooを継承 *{"Bar:…

"package"の代わりに"class"を使うclass.pm作った

再発明かな。 use strict; use warnings; use class; class "Foo" => ( bar => sub { my $self = shift; if (@_) { $self->{bar} = shift; } $self->{bar}; }, ); my $foo = Foo->new(bar => 'baz'); print $foo->bar, "\n"; #=> 'baz' $foo->bar('hoge'); p…