Let me break it into pieces ...
First create a function that checks the structure:
sub validate
{
my ($data) = @_;
return 1;
}
... , :
sub validate
{
my ($data, $filter_name) = @_;
return 1;
}
- , , ; , :
sub validate
{
my ($data, $filter_name) = @_;
return if not exists $data->{$filter_name};
return 1;
}
, . - "" ( , , , , , - undef ), :
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
return 1;
}
, filter_name, , , , hashref:
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
return if ref $data->{$filter_name} ne 'HASH';
return 1;
}
"filter_actions" "filter_criteria" :
sub validate
{
my ($data, $filter_name) = @_;
return if not defined $data->{$filter_name};
return if ref $data->{$filter_name} ne 'HASH';
return if not defined $data->{$filter_name}{filter_actions};
return if not defined $data->{$filter_name}{filter_actions};
return 1;
}
! perl perldoc perlreftoot, perldoc perlref perldoc perldsc.