Heck, it doesn't even have anonymous functions.
Yes it does. (...) create_function.
Functions created by create_functions are NAMED, not anonymous. In fact, create_function RETURNS the name.
I'm not sure if you could consider that as two separate expressions, but it seems a concise enough idiom for me.
I sure do. If in "bar() ? bar() : $foo", the bar function does something impure, like increase a counter, it does so twice, while with Perl's "bar() || $foo", it is done only once. Also, if bar() takes 10 seconds to finish, then "bar() ? bar() : $foo" will take at least 20.