undef Perl

undef は、Perlプログラミング言語のできる値に含まれる変数となります。 ない場合に割り当てる値を変数は、変数が undef.

ここでは一例ですPerlプログラム:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $var;
print Dumper $var;

$var = 123;
print Dumper $var;

$var = undef;
print Dumper $var;

このプログラム表示:

$VAR1 = undef;
$VAR1 = 123;
$VAR1 = undef;

まず最初に宣言した変数が割り当てなしで任意の値: my $var;. その print Dumper $var; 持に関する情報この変数の値の画面 できるようにな変数を含む undef). この後は割り当てが可変数 123および 示したい画面に表示します。 そして、コードエディタツールバー上の $var = undef; を割り当ての変数 undef 、 持に関する情報です。

undef の場合は配列内の要素または値のハッシュ:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my @arr = (1, undef, 'three');
print Dumper \@arr;

my %h = (
    a => undef,
);
print Dumper \%h;

しばしば undef は使用します。 することができる機能は常に数値を返しますが、エラーが発生した場合にはを返します undef.

undef からの英語 undefined("未定義").

undef にな

undef は単一の値です。 この文字列 'undef'では、空の文字列 '' ではないの 0. すべての値が異なります。

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

foreach my $var (undef, 'undef', '', 0) {
    print Dumper $var;
}

の場合はハッシュの場合、キーの値 undef と同じではないのハッシュは無いのかも知れませんが、鍵があります。

確認方法 undef

を確認するに値 undefの 機能を利用する defined. この値は undef の場合の機能 defined はfalseを返します:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

if (!defined($var)) {
    print 'var is undef';
}

とても簡単に書き鯖 is_undefは、trueを返します undef:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);
use Data::Dumper;

sub is_undef {
    my ($maybe_undef) = @_;
    return !defined($maybe_undef);
}

my @arr = (1, undef, 'three');

foreach my $el (@arr) {
    say is_undef($el) ? 'undef' : 'not undef';
}

がされている訳ではなく、その機能を利用す defined な結束.

もう一つの方法がありうることを確認の変数を含むundefであ 使用のオペレーター ~~ (このオペレーターと呼ばれ smartmatch). 本書に登場 Perl5.10、Perl5.18このオペレーターに警告 Smartmatch is experimental at script.pl line 8.. ここではサンプルコードは、この文:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

if ($var ~~ undef) {
    print 'var is undef';
}

多くのチェック undef は機能 defined.

Perl undef の変換をJSON

図書館での作業をJSON Perlに変換しますPerl値 undefnull JSON:

▶ Run
#!/usr/bin/perl

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

print encode_json {
    a => undef,
};

このコードが表示さ {"a":null}.

逆に変換するからJSON null となり undef:

▶ Run
#!/usr/bin/perl

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

print Dumper decode_json '[null]';

このコード表示

$VAR1 = [
          undef
        ];

機能 ref

の機能 ref に関して undef は空の文字列 ''. この点 undef は異なる文字列にする必要がある。 のための undef、文字列と数字の機能 ref 空の文字列が返されます:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

foreach my $el ('asdf', undef, 100) {
    print Dumper ref($el);
}

Boolean値

使用時 undef 論理的業務 undef です。 このコード 画面にテキスト false:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

if (undef) {
    print 'true';
} else {
    print 'false';
}

使用文字列

の場合はご利用の場合 undef 操作文字列ではなく undefまで 空文字列を指定 ''あまりにも警告が表示されます。

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

print 'AAA' . $var . 'BBB';
▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

if ($var eq '') {
    print 'equal';
} else {
    print 'not equal';
}

最初の場合、警告が表示され Use of uninitialized value in concatenation (.) or string at script.pl line 10., 後者の場合 Use of uninitialized value in string eq at script.pl line 8..

利用数

の場合はご利用の場合 undef 事業を、代わりに undefます 使用数 0. が、同じ警告が表示されます。

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

print $var + 4;
▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

if ($var == 0) {
    print 'equal';
} else {
    print 'not equal';
}

最初の場合、警告が表示され Use of uninitialized value $var in addition (+) at script.pl line 8., 後者の場合 Use of uninitialized value $var in numeric eq (==) at script.pl line 8..

が挙げられているのは興味深い時 ンクリメントオペレーター ++ で通知:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var;

print $var++;

関連する話題

その他の記事