モジュールの利用

モジュールの作り方はわかりました。

では、うまく利用してみましょう。
モジュールA → モジュールB → メイン処理
AはBの親で、Bはメイン処理の親という場合。

  • モジュールA
コンストラクタ

sub new {
my $class = shift;
my %op = @_;  #ハッシュで受け渡しするために作る

my $self =  {
  tmpl _dir => $op{tmpl_dir},
  tmpl_message => $op(tmpl_message);
}
bless $self, $class;
  • モジュールB

モジュールBは、モジュールAの子クラスになります。

use base qw(モジュールA);
use vars qw($VERSION);
$VERSION = 1,00;

sub new {
my $class = shift;
my %op = @_;

#親の処理を呼び出す
my $self = $class->SUPER::new(%op);

ここで、モジュールBのコンストラクタを作っているのですが、
親がいますから親のコンストラクタを呼び出します。

$self->{tmpl_kakunin} = $op{tmpl_kakunin};

return $self;

このように、属性(変数)を増やして行くのですが、
子モジュールなので$self->をつけなくてはなりません。
returnするのも、$selfだけです。
blessは親がしてますからね。

そしてようやくメイン処理。上まではモジュールなので
触ることはありませんよね。

  • メイン処理

まず変数に値を入れます。

my $flogstyle = new Meatflog (

孫?モジュールを呼び出して、変数をセットします。

tmpl_kakunin		=> 'panda_kakunin.html',

ここはいつも通りに。
で、忘れてはいけないのが、これを実行します。

$flogstyle -> run();

このrunは、親モジュールのメイン処理サブルーチンの名前です。
ここで言うと、モジュールBの親の、モジュールAのメイン処理の名前になります。。

続いて、子モジュールのメイン処理。

package Meatflog;

モジュール名を宣言。

use base qw(モジュールB);

モジュールBが親なので、それを継承します。
モジュールBには、モジュールAを継承するように書かれています。

そして、この下にサブルーチンを書いて行きましょう。
親と違う、このプログラム独自のものを書きましょうね。
その際、親とかぶってる場合は、

 $self -> SUPER::start();

これでオーバーライドされます♪

これが、一通りの流れになりま〜す♪