sub defaults { my $d1= ( @_ ? shift : 1 ); my $d2= ( @_ ? shift : 2 ); my $d3= ( @_ ? shift : 3 ); print("$d1 $d2 $d3\n"); } defaults(); defaults(0); defaults(0, 0); defaults(0, 0, 0); __DATA__ 1 2 3 0 2 3 0 0 3 0 0 0