Whiff command, which takes a number of command names and returns the first one that exists and is executable.
It assumes that all the arguments form a best-first list of alternatives, and only prints the path to the first alternative found in the path. If none is found, it prints an error (to stderr) and exits with an error code.
A programmer interface is available in the App::Whiff module.