http://qs1969.pair.com?node_id=907228

David Clarke has asked for the wisdom of the Perl Monks concerning the following question:

Is there a Monk who'll help my perling-style? In my scripts I often use ternary operators of the kind:

$Target = Function($Params) ? Function($params) : $DefaultValue;

This example is simple enough. But if Function() takes multiple parameters, and they are themselves complex (e.g. using dereferencing or array / hash indexing), there is a risk that the two invocations may be subtly mis-typed; not to mention side-effects from calling the function multiple times. My question is - Is there a way to simplify this construct? Is there something I can use between the '?' and ':' that gets the result from imediately left of the '?' ? On possible solution using an intermediate result:

$Target = ($temp = Function($params)) ? $temp : $DefaultValue;

breaks up the elegant left-to-right sequence of the code. And an elegant sequence help understanding and maintainability.