2019年5月17日金曜日

[Perl] 09. パッケージの作成

今回はパッケージの作成についてのメモ。



パッケージファイルの作成
前回使った引数の総和を返すサブルーチンをパッケージ化してみる。書き方は他にもあると思う。(特に Exporter のところ...)

ポイントとしては4つ。
・ファイル名は <パッケージ名>.pm
・先頭行に package <パッケージ名>; を記載
・Exporter モジュールを使ってエクスポート対象を追加
・末尾行に 1; を記載
sum_pkg.pm

package sum_pkg; use strict; use warnings; use Exporter 'import'; our @EXPORT_OK = 'sub_add'; # 複数の場合は qw(sub_aaa sub_bbb); # 引数の合計を返す sub sub_add { my $result; $result += $_ foreach (@_); return $result; } 1;

ソースのコメントにも書いているが、@EXPORT_OK に指定するサブルーチンが複数ある場合は、以下のようにすること。
our @EXPORT_OK = qw(sub_aaa sub_bbb);
our @EXPORT_OK = ('sub_aaa', 'sub_bbb');

パッケージファイルを呼び出す
use <パッケージ名>; を使って呼び出す。実行するスクリプトと違うディレクトリにパッケージファイルがある場合はインクルードパスを通す必要があるので注意。
test.pl

#!/bin/perl use strict; use warnings; use sum_pkg 'sub_add'; # 複数の場合は qw(sub_add sub_bbb); my @array = (10, 20, 30); my $sum = sub_add(@array); print "sum total = ".$sum."\n";
実行結果
$ ./test.pl
sum total = 60

こちらも使用するサブルーチンが複数ある場合は、以下のようにすること。
use sum_pkg qw(sub_aaa sub_bbb);
use sum_pkg ('sub_aaa', 'sub_bbb');

インクルードパスを通す
やり方は色々あるようですが、今回は lib モジュールを使った方法を記載。ディレクトリ構成が以下の場合を例とする。

test.pl
dir
└ sum_pkg.pm

test,pl に sum_pkg.pm の場所を lib モジュールを使って指定する。use sum_pkg ... よりも上に書く必要があるので注意。
test.pl

#!/bin/perl use strict; use warnings; use lib './dir'; use sum_pkg 'sub_add'; # 複数の場合は qw(sub_add sub_bbb); my @array = (10, 20, 30); my $sum = sub_add(@array); print "sum total = ".$sum."\n";



0 件のコメント:

コメントを投稿