sub list { join(" and ", reverse grep defined && length, pop @_, join(", ", @_)) }