Perl 5 имеет несколько ложных значений : 0
, "0"
, ""
, undef
, ()
.
Важно отметить, что некоторые вещиможет показаться, что они должны быть ложными, но это не так.Например, 0.0
является ложным, поскольку это число эквивалентно 0
, но "0.0"
- нет (единственные строки, которые являются ложными, - это пустая строка (""
) и "0"
).
У этого также есть понятие определенности.Считается, что переменная, для которой назначено значение (отличное от undef), определена и вернет true при проверке с помощью функции defined
.
При условии, что вам нужен аргументчтобы быть неотрицательным целым числом, лучше проверить это:
unless (defined $value and $value =~ /^[0-9]+$/) {
#blah
}