1. Perl
  2. オブジェクト指向プログラミング
  3. here

クラスの作成

Perlでクラスを作成するにはpackage文を使います。

# Pointクラス
package Point;

# Foo::Barクラス
package Foo::Bar;

モジュール

クラスをモジュールとして利用するには、クラス名に対応したファイルを作成します。「::」を「/」に変換して「.pm」を末尾につけます。

Point.pm
Foo/Bar.pm

モジュールファイルの末尾には「1;」をつける必要があります。

# Point.pm
package Point;

1;
# Foo/Bar.pm
package Foo::Bar;

1;

これらのモジュールをPerlプログラムから読み込むサンプルです。「Point.pm」と「Foo/Bar.pm」は「lib」ディレクトリの中に配置してください。

ファイル配置

class.pl
lib/Point.pm
lib/Foo/Bar.pm

サンプルプログラム

# class.pl

use strict;
use warnings;
use FindBin::Bin;

use lib "$FindBin::Bin/lib";

# クラスの読み込み
use Point;
use Foo::Bar;

クラスの雛形

クラスの雛形を示しておきます。

1. クラスの雛形

以下がクラスの雛形になります。

package Book;
use strict;
use warnings;

# コンストラクタ
sub new {
  my $proto = shift;
  my $class = ref $proto || $proto;
  my $self = {};
  bless $self, $class;
    
  $self->init( @_ );
  return $self;
}

# オブジェクトの初期化
sub init {
  my ($self, @args) = @_;
  # 追加で行いたい処理
}

# アクセッサ
sub title {
  my $self = shift;
  if (@_) {
    my $old = $self->{title};
    return $self->{title} = $_[0];
  }
  else{
    return $self->{ title };
  }
}


sub author {
  my $self = shift;
  if (@_) {
    my $old = $self->{author};
    return $self->{author} = $_[0];
  }
  else{
    return $self->{author};
  }
}

1;

後は好きなメソッドを追加するだけですね。

業務に役立つPerl

Perlテキスト処理のエッセンス 書籍版

関連情報