パッケージファイルの作成
前回使った引数の総和を返すサブルーチンをパッケージ化してみる。書き方は他にもあると思う。(特に 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 件のコメント:
コメントを投稿