This is the implemantation of OO-Classes for HPL. This bring a easy way to create PM classes, but with HPL resources/style.
search.cpan.org recent より。Class::HPLOO はJava風にPerlのクラスを定義するシンタックスを提供するクラス。
#!/usr/local/bin/perl
use strict;
use warnings;
use Class::HPLOO;
class Animal {
# constructor
sub Animal {
$this->{name} = $_[0]; # instance field
printf("create animal instance (%s)\n", $this->{name});
}
# abstract method
sub bark { die }
}
# inherit Animal (not well worked)
class Dog extends Animal {
sub bark {
printf("%s: baw wow\n", $this->{name});
}
}
package main;
my $doc = new Dog("Pochi");
$doc->bark;
こんな感じで Perl OO が可能になります。(試した感じ、extends Animal でうまく継承できてないみたいだけど)
Perl の OO シンタックスを提供する CPAN モジュールは色々あります。例えば、Error は例外処理を (evalブロックで記述せずに) Java のような try/catch/finally 形式で記述することを可能とします。例外をオブジェクトとして扱うことができるようにもなります。Class::HPLOO と組み合わせるとより Java 風に。嬉しいかどうかは別として。(笑)
あと、こんなのもありました。
Perl6::Classes allows the creation of (somewhat) Perl 6-style classes in Perl 5.
Perl5 に Perl6 スタイルのシンタックスを提供するモジュールだそうな。
この手の話題には以前にも 'Perl OOP におけるクラスの実装方法' でも触れましたけど、ほんと色々あります。でも最近は、原典に立ち返って普通にコンストラクタや getter/setter もコーディングしてたりする。