Почему пустая строка не является ложным выражением в булевском контексте?

В Perl'е пустая строка в булевском контексте действует как false. В Ruby пустая строка - это истина, так как только nil и false являются ложью в условных выражениях. Причина такого решения - скорость, так как nil и false - непосредственные значения, и поэтому нет необходимости отслеживать цепочку ссылок на объект.

Чтобы проверить, пустая ли строка, используйте empty?, либо сравните строку с "", либо сравните length строки с 0.