는 방법을 확인하는 Perl 에서 변수를 포함 undef

작업입니다. 코드에서는 Perl 프로그래밍 언어로는 변수입니다. 당신이 필요 여부를 확인 이 변수의 값 undef 나지 않습니다.

결정

변수 포함 undef 는 경우에만 가능 defined 변수에 대해 false 를 반환합니다. 여기에 코드를 표시하는 텍스트는 경우는 변수를 포함 undef:

▶ Run
#!/usr/bin/perl

my $foo;

if ( !defined($foo) ) {
    print "foo is undef";
}

잘못된 의사 결정

지 여부를 확인하 undef 변수에 당신을 사용할 필요가 defined. 하지만 그것은 종종 발생 무엇을 확인 undef 외의 사용,잘못된다.

여기에 첫 번째 예는 어떻게 그것을 하지 않:

▶ Run
#!/usr/bin/perl

my $foo;

if ( !$foo ) { # error!
    print "foo is undef";
}

이 예제는 단지 문자열 foo is undef 경우에는 변수 $foo 값을 포함 undef, 하지만 코드 인쇄에 이 라인에서 다른 경우에는 적합하지 않습니다. 는 경우,예를 들어, $foo 담 수 0 이나 빈 문자열 ''. 이 코드는지를 확인하는 $fooundef, 는지 확인 $foo 포함 값을 false 로,그것은 절대적으로 동일하지 않으로 undef.

여기에 또 다른 예는 잘못된 유효성 검사 undef:

▶ Run
#!/usr/bin/perl

my $foo;

if ( $foo == undef ) { # error!
    print "foo is undef";
}

거기에는 모든 완전히 잘못입니다. 는 경우는 변수 $foo 값을 포함 undef,이 코드 인쇄 소 foo is undef지만 코드를 인쇄 이 라인에서 다른 경우에는 적합하지 않습니다. 예를 들어,는 경우는 변수에 $foo포함 문자열 'Hello'.

운전자 == 것입 비교를 위해 사이의 숫자입니다. 기 전에 당신이의 비교가 이 연산자로 변환한 인수하는 숫자입니다. 변 $fooundef 가 수 0. 고 undef 의 오른쪽에는 연산자가 수 0. 제로는 제로, 조건은 시작됩니다. 그러나 영되고,예를 들어 'Hello'.

를 추가하는 경우 이 코드 use strict;use warnings; 일,다음 Perl 출력 foo is undef지만,당신이 알에 무슨 일이 일어나고 있는지에 대해 뭔가 이상한:

Use of uninitialized value in numeric eq (==) at script.pl line 8.
Use of uninitialized value $foo in numeric eq (==) at script.pl line 8.
foo is undef

일반적으로,그것은 항상 매우 좋은 방법을 사용하여 항상 use strict;use warnings;.

관련 주제

다른 기사