Как сказал Крис Дж, нулевые значения возвращаются как неопределенные значения.
Если бы у вас были включены предупреждения, вы бы получили предупреждение «неопределенное значение при печати» при печати значений. Использование прагматических strict
и warnings
может сэкономить много времени на отладку. Прагма diagnostics
добавляет дополнительный пояснительный текст к стандартным предупреждениям и фатальным ошибкам.
Довольно просто отследить и заменить значения NULL, когда они поступают из базы данных:
use strict;
use warnings;
my @nulls = ();
while ((my $null) = $sth1->fetchrow_array)
{
# before perl 5.10: use the ternary operator.
push @nulls, defined $null ? $null : 'NULL';
# perl 5.10 adds the defined-or operator: //
push @nulls, $null // 'NULL';
}
Или вы можете построить свой массив @nulls
так же, как показано выше, а затем изменить нули во время отображения.
my @pre_5_10 = map { defined $_ ? $_ : 'NULL' } @nulls;
my @perl_5_10 = map { $_ // 'NULL' } @nulls;