Data::Util

Data::Utilはデータの型チェックに使えるUtility。List::MoreUtilsと合わせ技すると強力かな。

use Data::Util qw(:check);
use List::MoreUtils qw(all);

check(+{test=>1}, [1,2,3], 1);

sub check {
    my @args = @_;
    unless (all { is_hash_ref($_) || is_array_ref($_) } @args) {
        print "error!\n";
    }
}

これだけだとref($foo) eq 'Hash'との違いをあまり感じないけどis_instanceとか使うと便利だろうなー