質問

Perlでは、オブジェクトが参照できるように基本的なPerlデータタイプとして恵まれた特定のクラスです。ご利用の際は、ref()関数にunblessed参照、またどのようなデータタイプの参照ポイントです。しかし、呼び出すときはref()を参照に恵まれた、返されるパッケージの名前を参照に恵まれました。

知りたい、実際に基本となる型の恵まれた参考値です。どのようにして判定すか。

役に立ちましたか?

解決

Scalar::Util::reftype() は、最もクリーンな溶液とする。の Scalar::Util モジュールに追加されたPerlのコアバージョンが5.7では、以前のバージョン(5.004以降)からCPAN.

またプローブ UNIVERSAL::isa():

$x->isa('HASH')             # if $x is known to be an object
UNIVERSAL::isa($x, 'HASH')  # if $x might not be an object or reference

明らかにしかも確認のための ARRAYSCALAR 種類です。のユニバーサルモジュールとしての基底クラスのすべてのオブジェクト)の一部のコアからPerl5.003.

別の言い方--簡単ですが、汚れであるstringifyの参考文献をご参照ください。このクラスな過負荷stringificationしょうか何かに似 Class=HASH(0x1234ABCD), で解析を抽出物を配下のデータタイプ:

my $type = ($object =~ /=(.+)\(0x[0-9a-f]+\)$/i);

他のヒント

かいます。の基本となる型のオブジェクトは、実装の詳細なんか嬉します。ださい。

最初のこの件についてどう考えていた"オブジェPerl常にハッシュヒこのhack?"

でも、スカラー::Util::reftypeたと言えるのでしょうか。さての質問です。

こちらはコードスニペットを証明するため..すのに使用します。

$> perl -e 'use strict; use warnings "all";
            my $x = [1]; bless ($x, "ABC::Def");
            use Data::Dumper; print Dumper $x;
            print ref($x) . "\n";
            use Scalar::Util "reftype"; print reftype($x) . "\n"'`

出力:

$VAR1 = bless( [
                 1
               ], 'ABC::Def' );
ABC::Def
ARRAY
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top