sub foo ( my($x) :req, my($y) ||= 10, local($z) ||= ($x * $y) ) { # ... }