タグ

aopとperlに関するkiyo_hikoのブックマーク (3)

  • Hook::LexWrap

    NAME Hook::LexWrap - Lexically scoped subroutine wrappers VERSION version 0.26 SYNOPSIS use Hook::LexWrap; sub doit { print "[doit:", caller, "]"; return {my=>"data"} } SCOPED: { wrap doit => pre => sub { print "[pre1: @_]\n" }, post => sub { print "[post1:@_]\n"; $_[1]=9; }; my $temporarily = wrap doit => post => sub { print "[post2:@_]\n" }, pre => sub { print "[pre2: @_]\n "}; @args = (1,2,3);

    Hook::LexWrap
    kiyo_hiko
    kiyo_hiko 2020/10/28
    関数呼び出しをフックする。デバッグ用に、呼ばれたら冒頭で引数をprintするとかできるはず(昔そういうコード書いたが紛失した)
  • 第3回 attributeを拡張してpluginに変化を加える | gihyo.jp

    今回のテーマ 前回は、Perlのattributeという仕組みを解説しました。今回は、さらにattributeの実戦的な利用方法として、(Perlとしては実験的な実装という扱いですが)パッケージ固有のattribute実装の方法と、Class::Component::Attributeを拡張してplugin作りを便利にする方法を取り上げます。 サンプルアプリケーション 連載では、プラガブルなモジュールを作製するという事を考えて、Gopperという実際に実行可能なサンプルアプリケーションを元に解説を行ないます。GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 659 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper パッケージ固有のattribu

    第3回 attributeを拡張してpluginに変化を加える | gihyo.jp
    kiyo_hiko
    kiyo_hiko 2012/03/19
    attributeはBEGIN時に解釈されるらしい 柔軟性貧しくないか…
  • subtest と Hook::LexWrap を使って xUnit みたいな setUp, tearDown をする - tsucchi’s diary(元はてなダイアリー)

    発見したのは結構前なのですが、twitter でつぶやいても(これとかこれ)、あんまり(っていうか全く)反響なかったのでこっちにも書いておきます。 Perl でテストを書いているときに、xUnit の setUp/tearDown*1を使いたい場合、Test::Classを使ってテストを書いて、setup, teardown を使うのが一般的かな、と思います。こんな感じね。 #!/usr/bin/perl use strict; use warnings; use Test::Class; MyTest->runtests(); package MyTest; use parent qw(Test::Class); use Test::More; sub set_up :Test(setup) { diag("setup"); } sub tear_down :Test(teardown)

    subtest と Hook::LexWrap を使って xUnit みたいな setUp, tearDown をする - tsucchi’s diary(元はてなダイアリー)
    kiyo_hiko
    kiyo_hiko 2012/02/03
    Hook::LexWrap
  • 1