検索条件
全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だけ。ワンタイムの使い捨てになりかねないので..(^^;