Johannes Krude wrote: > Christian G. Warden schrieb: >> +$dmenu= ENV["DMENU"] || "dmenu -b" > > This is in ruby exactly the same, I think "or" is > more readable then "||"
I agree that 'or' is more readable than '||' but keep in mind that the '||' and 'or' operators are *different* in terms of precedence. Take a look at this precedence table: http://www.zenspider.com/Languages/Ruby/QuickRef.html#22 Notice that 'and' and 'or' have the lowest precedence (even lower than '=') than all other operators. As a result, that statement is evaluated like this: $dmenu= ENV["DMENU"] is the result of the above expression nil or false? If so, evaluate the stuff on the right-hand side of the 'or': "dmenu -b" And use this as the result of the overall expression (the entire line). So, if there is no $DMENU environment variable, then nothing gets assigned to the $dmenu global(!) variable. To illustrate, consider this example: >> x = nil or 5 => 5 >> x => nil Notice that the value of 'x' is NOT 5. If you used the '||' operator instead, then you get: >> x = nil || 5 => 5 >> x => 5 So the moral of the story is: stick with the C-style boolean operators unless you really intend to do something else.
