質問
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
明らかにしかも確認のための ARRAY
や SCALAR
種類です。のユニバーサルモジュールとしての基底クラスのすべてのオブジェクト)の一部のコアから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
所属していません StackOverflow