Mooseとは簡単にクラスを作ることができるモジュールのようだ。newとかは実装不要。
package Foo;
use Moose;
extends 'FooParent'; #これで親モジュールを継承できる
has name => { #アクセサを定義する関数
is => 'rw', #rwは読み書きができ、roは読み取りだけ($Foo->name,$Foo->name("hoge"))
isa => 'Str', #型の指定を行う
default => "Bob", #デフォルト値を指定できる。sub {Hoge->config}のようにサブルーチンも可
required => 1, #必須パラメータの場合は1を指定する
}
sub hoge { #メソッドの定義は普通に行う
print "My name is".shift->name."\n";
}
参考:
http://perldoc.jp/docs/modules/Moose/Manual.pod
2014年10月31日金曜日
【Perl】AUTOLOADの使用例
定義されていない関数を呼び出すとこのAUTOLOADというのが呼び出される便利な関数。
cpanのモジュールを拡張して独自モジュールを作るような使い方ができる。
Foo.pm
#########################################################
package Foo;$
use strict;
use warnings;
sub AUTOLOAD {
> our $AUTOLOAD;
> my (@args) = @_;
> print "autoload start..function_name:$AUTOLOAD\n";
> print "argument is (".join(',',@args).")\n";
}
1;
#########################################################
$ perl -MFoo -e 'Foo::test("a","b","c")';
autoload start..function_name:Foo::test
argument is (a,b,c)
参考:
サンプルコードによるPerl入門 サブルーチンのオートロード AUTOLOAD
http://perldoc.jp/docs/perl/5.8.0/AutoLoader.pod
cpanのモジュールを拡張して独自モジュールを作るような使い方ができる。
Foo.pm
#########################################################
package Foo;$
use strict;
use warnings;
sub AUTOLOAD {
> our $AUTOLOAD;
> my (@args) = @_;
> print "autoload start..function_name:$AUTOLOAD\n";
> print "argument is (".join(',',@args).")\n";
}
1;
#########################################################
$ perl -MFoo -e 'Foo::test("a","b","c")';
autoload start..function_name:Foo::test
argument is (a,b,c)
参考:
サンプルコードによるPerl入門 サブルーチンのオートロード AUTOLOAD
http://perldoc.jp/docs/perl/5.8.0/AutoLoader.pod
登録:
投稿 (Atom)