sub MySub($$;$) { my ($a,$b,$c) = @_; print "$a $b $c"; return 1; } ... MySub(1); #### sub MySub($args) { ... #and if I do not pass, say, $args->{my_obligatory_arg} whole thing dies on COMPILATION step }