Wartość null w Perl

W niektórych językach programowania istnieje specjalne znaczenie null. Na przykład, w języku JavaScript można przypisać nullzmiennej:

var a = null;

Tak samo null — jest to jedna z możliwych wartości w formacie JSON:

{
  "a": null
}

A jeszcze NULL jest wartością w bazie danych:

mysql> select null;
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

Null oznacza brak wartości.

W języku programowania Perl nie ma znaczenia która nazywa się null. Można napisać kod który próbuje przypisać wartość nullzmiennej:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $a = null;

Ale wykonanie tego kodu wyświetla błąd:

Bareword "null" not allowed while "strict subs" in use at script.pl line 6.
Execution of script.pl aborted due to compilation errors.

W języku programowania Perl służy specjalne znaczenie undef co oznacza brak wartości. To to samo, co null, ale tylko z inną nazwą.

Jest różnica między tym jak działa JavaScript i Perl. W JavaScript jeśli określić zmienną, ale nie nadać jej wartość, to jej wartość będzie undefined. A dalej już jej można przypisać null. Perl działa łatwiejsze. W Perlu nie ma różnych wartości undefined i null, w Perl jest tylko jedno specjalne znaczenie undef.

null w JSON i Perl

Podczas serializacji Perl struktury danych w formacie JSON wartości undef zostaną przekształcone w null wartości w formacie JSON. Oto przykład kodu:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use JSON::PP;

my $data = {
    a => undef,
};

print encode_json($data);

Ten kod wyświetla {"a":null}.

I odwrotnie, jeśli rozwijać JSON w Perl strukturę, wartości null zostanie zastąpiony przez undef:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use JSON::PP;
use Data::Dumper;

print Dumper decode_json('{"a":null}');

Program wyświetli na ekranie:

$VAR1 = {
          'a' => undef
        };

Tematy pokrewne

Inne artykuły