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("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

라이브러리 작업에서 사용 펄 변환 Perl 값 undefnull JSON:

▶ Run
#!/usr/bin/perl

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

print encode_json {
    a => undef,
};

이 코드는 디스플레 {"a":null}.

반대로,때로 변환 JSON nullundef:

▶ Run
#!/usr/bin/perl

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

print Dumper decode_json '[null]';

이 코드를 표시됩니다:

$VAR1 = [
          undef
        ];

기능 ref

함수의 결과 ref with respect to 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);
}

부울 값을 가

을 사용할 때 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++;

관련 주제

다른 기사