検索条件
全1件
(1/1ページ)
ref演算子が使える模様。リファレンスならその型を返してくれる模様。リファレンスじゃなかったらnullぽ...
blessされているときは、クラス名が返ってくるらすぃ。い万ところ使わないから参考程度にメモ。
use strict ;
my $test ;
my $ref_1 = [1, 2] ;
my $ref_2 = \$test ;
my $ref_3 = $ref_1 ;
my $ref_4 = {1 =>'t'} ;
my %hash_1 = {1 =>'t', [2,3]} ;
&chk_type($test) ;
&chk_type($ref_1) ;
&chk_type($ref_2) ;
&chk_type($ref_3) ;
&chk_type($ref_4) ;
&chk_type(%hash_1) ;
&chk_type(\%hash_1) ;
exit ;
sub chk_type($)
{
my $v = shift @_ ;
my $a = ref $v;
print "$a へのリファレンス\n" if ($a) ;
print "scaler\n" unless ($a) ;
}
scaler ARRAY へのリファレンス SCALAR へのリファレンス ARRAY へのリファレンス HASH へのリファレンス scaler HASH へのリファレンス
配列やハッシュの要素として、任意の型をガンガン放り込めるので、それを調べて処理したいという欲求があったのですよ...
Cで書くなら、voidポインタをキャストして使っていたかなぁ。
C++やC#なら実行時型とか使って、同じような処理ができると思う。が、まぁ、今回はPerlだけ。ワンタイムの使い捨てになりかねないので..(^^;