You can use wildcards when connecting modules. For example, from the previous example:
// in the instantiating module
lower my_inst (.*);
This connects the entire instance, as long as the upper-level module has the correct names and types.
In addition, these can be mixed and matched. For example:
lower my_inst (.myout(my_sig), .my_in(din), .*);
This connects the myout port to a signal called my_sig, the my_in port to a signal called din and clk and my_in2 is hooked up to the clk and my_in2 signals.