非Mouseクラスの継承

MyUA.pm

package MyUA;
use Mouse;
use MouseX::Foreign qw/LWP::UserAgent/;

sub FOREIGNBUILDARGS {
    my $class = shift;
    my %args  = @_;
    return ( agent => $args{agent} );
}
 
__PACKAGE__->meta->make_immutable();
1;

main.pl

use MyUA;
my $ua = MyUA->new( name => 'this-is-useless', agent => 'my-test-ua' );

説明

  • 非Mouseクラスを継承する場合、extendsではなく、MouseX::Foreignを使う。
    • ここでは非MouseクラスであるLWP::UserAgentを継承する。
  • FOREIGNBUILDARGS()で親クラスのnew()に渡す引数を作成する。
    • ここでは( agent => $args{agent} )がLWP::UserAgentのnew()に渡る。
  • ここでは記述がないが、BUILDARGS()でMyUAクラスのコンストラクタに渡す引数を作成出来る。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2010-12-24 (金) 00:19:54 (2908d)