TWクラブ【BloodyRosary】@12.plライブラリとpmモジュール


require を使ってライブラリを読み出す(別の.plファイルを読み出すようなイメージ。サブルーチン読み出し用かな

	注意:	requireするソースの最後の行には必ず 1; を置く(真を返すためみたい

	例
	main.pl のソース
	require 'hoge.pl';

	print hoge(2,3);

	hoge.pl のソース
	sub hoge {
	    my $x = shift;				shift で引数の1個目を取り出す(次 shift した場合は2個目)
	    my $y = shift;
	    return $x * $y;
	}

	1;					1;を忘れずに


・package宣言がありの場合

	main.pl のソース
	require 'hoge.pl';

	print Hoge::hoge(2,3);			パッケージ宣言した場合、パッケージ名とコロン(:)2つを、
						変数名やサブルーチン名の前に付け足す。
	hoge.pl のソース				↓
	package Hoge;				Hoge(パッケージ名)
						::(コロン2つ)
	sub hoge {				hoge(サブルーチン名)
	    my $x = shift;				↓
	    my $y = shift;				hoge::hoge となる
	    return $x * $y;
	}

	1;


・package 宣言 + Export の場合
	ライブラリ側で package 宣言した上で、サブルーチンを Export します。
	Export するとこで、メインルーチンで「Hoge::hoge()」という風に呼び出していたのを、
	「hoge()」と書くだけで呼び出すことができるようになります。

	main.pl のソース
	require 'hoge.pl';
	import Hoge;				なんかimportが必要

	print hoge(2,3); 

	hoge.pl のソース
	package Hoge;

	use Exporter;				関数をエクスポートしている箇所
	our @ISA = qw(Exporter);
	our @EXPORT = qw(hoge);

	sub hoge {
	    my $x = shift;
	    my $y = shift;
	    return $x * $y;
	}

	1;





・毎度 import するのは面倒くさい! となると use が登場

use を使ってモジュールを読み出す(別の.pmファイルを読み出す感じ
use が裏で自動的に import してくれるっぽいので、import文を打つ必要がなくなる。

	main.pl のソース
	use Hoge;

	print hoge(2,3);

	Hoge.pm のソース
	package Hoge;

	use Exporter;
	our @ISA = qw(Exporter);
	our @EXPORT = qw(hoge);

	sub hoge {
	    my $x = shift;
	    my $y = shift;
	    return $x * $y;
	}

	1;


※ちなみに
	use Hoge;

	と

	BEGIN {
	    require Hoge;
	    import Hoge;
	}

	は

	同じことをしている。

Perl目次に戻る

別館TOPに戻る
ブログに戻る

BloodyRosary
Presents by 【BloodyRosary】
Copyrights (C) NEXON Corporation and NEXON Co., Ltd.
All Rights Reserved.