Em algumas linguagens de programação há um significado especial null
. Por exemplo,
em JavaScript, você pode atribuir o null
variável:
Assim null
— este é um dos valores possíveis em JSON:
E ainda NULL é um valor no banco de dados:
mysql> select null;
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)
Null significa a ausência de valores.
Na linguagem de programação Perl não existe um valor que é chamado de null
. Você pode escrever código
que tenta atribuir um valor null
variável:
▶ Run
use strict;
use warnings;
my $a = null;
Mas a execução deste código de erro:
Bareword "null" not allowed while "strict subs" in use at script.pl line 6.
Execution of script.pl aborted due to compilation errors.
Na linguagem de programação Perl é usado o valor especial undef
o que significa
a falta de valores. É a mesma coisa que null
, mas apenas com outro nome.
Há uma diferença entre como a execução de JavaScript e Perl. Em JavaScript se identificar
uma variável, mas não atribuir um valor a ela, então o seu valor será undefined
. E mais
ela já pode atribuir null
. Perl funciona mais fácil. Em Perl, não há valores diferentes
undefined
e null
, em Perl, há apenas um valor especial undef
.
Ao serializar o Perl da estrutura de dados em JSON valores undef
serão convertidos em
null
valores em JSON. Aqui está um exemplo de código:
▶ Run
use strict;
use warnings;
use JSON::PP;
my $data = {
a => undef,
};
print encode_json($data);
Este código irá imprimir na tela {"a":null}
.
E vice-versa, se expandir JSON em Perl a estrutura, os valores null
, serão substituídos por undef
:
▶ Run
use strict;
use warnings;
use JSON::PP;
use Data::Dumper;
print Dumper decode_json('{"a":null}');
$VAR1 = {
'a' => undef
};