[求助]如何判断数据类型

[求助]如何判断数据类型

一个弱弱的问题:
我想写一个test_print的程序,用于print输入的数据,数据可能是$data,@data, %data的,在主程序中,产生数据后,调用
&test_print(\$data);或者&test_print(\@data);&test_print(\%data);看data都是些什么;

use Data:umper;

....
&test_print(\Xdata);  #X代表相应数据类型



sub test_print{
   my $ref = shift;
   if(#$ref 指向scalar#){
        print dumper($$ref);
   }   
  elsif(#$ref 指向数组#){
        print dumper(@$ref);
   }
  elsif(#$ref 指向Hash#){
        print dumper(%$ref);
   }
   else{
   return 0;
   }

  return 1;
}


请问大家,括号中#。。。#的语句应该怎么写呢?也就是说,如何判断引用指向变量的类型?谢谢!
perldoc -f ref