определение типа аргумента функции

Вопрос скорее всего несколько тупняковый, но ответа найти пока не могу.

Пишу набор функций для max-plus алгебры. В функцию в качестве аргумента нужно передавать либо скаляр с рациональным числом/бесконечностью либо ссылку на многомерный массив.
В matlabе все есть массив и там просто определялись размеры, а в perl как различить?

В голову пришел только такой вариант:

use strict;
my @a;
@a=(1, 3, 4);
my $ref=\@a;
print $ref."\n";
print "test\n" if ($ref=~/ARR/);
#                  ^^^^^^^^^^^^

if ref $ref eq "ARRAY";

print "it is array\n" if ref $ref eq "ARRAY";