Documentation for sub USAGE assembled from the following pages:

Language documentation: Command line interface §

From Command line interface

(Command line interface) sub USAGE §

If no multi candidate of MAIN is found for the given command line parameters, the sub USAGE is called. If no such method is found, the compiler will output a default usage message.

#|(is it the answer)
multi MAIN(Int $i) { say $i == 42 ?? 'answer' !! 'dunno' } #|(divide two numbers) multi MAIN($a, $b){ say $a/$b } sub USAGE() { print Q:c:to/EOH/; Usage: {$*PROGRAM-NAME} [number] Prints the answer or 'dunno'. EOH }

The default usage message is available inside sub USAGE via the read-only $*USAGE variable. It will be generated based on available sub MAIN candidates and their parameters. As shown before, you can specify an additional extended description for each candidate using a #|(...) Pod block to set WHY.