package V; use Carp; sub is_array_of_scalar { my $arg = shift; if (!defined $arg) { warn "Undefined value! Expected reference to an array of scalars!"; return 0 } if(ref $arg ne "ARRAY") { warn "Expected ARRAY reference, found " . ref($arg) . "."; return 0; } for my $index(0..$#$arg) { if(!defined($arg[$index])) { warn "Undefined value found on position $index."; return 0 } if(ref($arg[$index]) ne "") { warn "Scalar expected, reference found on position $index."; # (1) return 0 } } return 1; } sub is_array_of_array_of_scalar { my $arg = shift; if (!defined $arg) { warn "Undefined value! Expected reference to an array of scalars!"; return 0 } if(ref $arg ne "ARRAY") { warn "Expected ARRAY reference, found " . ref($arg) . "."; return 0; } for my $index(0..$#$arg) { if(!is_array_of_scalar($arg[$index])) { warn "Wrong value(s) in row $index."; return 0 } } return 1; } "true value at the very end";