in reply to Re^3: lvalue subs return undef, playing with experimental features, the End of the World, etc
in thread lvalue subs return undef, playing with experimental features, the End of the World, etc

an unfortunately ugly ?: chain:

It need not be quite so ugly. Reverse the first test so you get a chained ternary nstead of a nested ternary. Then parenthesize the tests and line up the ? and : vertically and it becomes a whole lot easier to read (IMO).

(!defined($key)) ? $bar : (exists($foo{$key})) ? $foo{$key} : $foo{$key} = undef;
Incidentally I'm betting you format your code using some kind of automatic indenter (cperl-mode perhaps?) In my experience code formatters do awful things to chained and nested ternary ops. So format em by hand and you get much more readable results.

:-)

Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look.

  • Comment on Formatting chained and nested ternary ops (was Re^4: lvalue subs return undef....)
  • Download Code