«0, но истина» является строкой, как и любая другая, но из-за синтаксиса perl она может служить полезной цели, а именно возвращать целое число ноль из функции без результата «false» (в глазах perl).
И строка не обязательно должна быть "0, но истина". «0, но false» по-прежнему «true» в логическом смысле.
рассмотреть следующие вопросы:
if(x)
for x: yields:
1 -> true
0 -> false
-1 -> true
"true" -> true
"false" -> true
"0 but true" -> true
int("0 but true") ->false
Результат всего этого вы можете получить:
sub find_x()
и этот код сможет выводить «0» в качестве вывода:
if($x = find_x)
{
print int($x) . "\n";
}