- Perl ›
- オブジェクト指向プログラミング ›
- here
ref関数 - クラス名の取得・リファレンスの種類の取得
ref
関数を使うと、bless関数を使って生成したオブジェクトから、クラス名を取得できます。
my $http = HTTP::Tiny->new; # ref関数でクラス名を取得 my $class_name = ref $http;
HTTP::Tiny
という文字列を取得できます。
blessされていないオブジェクトへのリファレンスの場合は、以下の値が返ります。
オペランドが bless されていないオブジェクトへのリファレンスの場合、 返り値はオブジェクトの型を示します。 bless されていないリファレンス先がスカラではない場合、 返り値はオブジェクトの種類を示す、 ARRAY, HASH, CODE, FORMAT, IO のいずれかの文字列です。 bless されていないリファレンス先がスカラの場合、 返り値はそのスカラが現在保持している種類に依存して、 SCALAR, VSTRING, REF, GLOB, LVALUE, REGEXP の いずれかの文字列です。 しかし、qr// は既に bless されて作成されるので、 ref qr/.../ はおそらく Regexp を返すことに注意してください。 これらの組み込み型名はまたクラス名として使われることができるので、 ref がこれらの名前の一つを返すことは、 明らかにリファレンス先がその名前が示している種類のものであることを 示しているわけではないことに注意してください。
blessされていないオブジェクトへのリファレンスの場合のサンプルです。
# ARRAY my $ref_array_ref = ref []; # HASH my $ref_hash_ref = ref {};