sub valid_dotted_quad { my $all_valid = 1; my @sections; ARGUMENT:for (@_) { next ARGUMENT unless $all_valid; next ARGUMENT unless ($all_valid &&= /^\d{1,3}\.\d{1,3}\.\d{1,3} \.\d{1,3}$/o); @sections = split /\./, $_; for (@sections) { next ARGUMENT unless ($all_valid &&= ($_ <= 0xFF)); } } return $all_valid; }