sub blah { my ($foo, $bar, $baz) = @_; for my $arg (qw( foo bar baz )) { croak("$arg missing/undefined") if !defined(shift); } ... } #### sub blah { my ( $foo, $bar, $baz ); for my $arg ( ( $foo, $bar, $baz ) = @_ ) { croak "You forgot something" unless defined $arg; } do_something; } #### sub blah { croak "You forgot something" unless all { defined } ( my ( $foo, $bar, $baz ) = @_ ); do_something; }