sub exampl { my %p = @_; my @data = UNIVESAL::isa($p{data}, 'ARRAY') ? @{$p{data}} : ( $p{data} ); foreach my $datum (@data) { return if $p{required} && !$datum; # Do stuff that references $datum } return 1; # Everything is OK }