무엇이 진실하고 거짓

에서는 Perl 프로그래밍 언어 특별한 값을 의미하는 진실하고 거짓입니다.

는 모든 값을 Perl 수 있으로 해석하는 부울 값입니다. 예를 들어,문자열 'Hello' 은 사실이다. 다음 코드를 문자열을 표시합 'true':

▶ Run
#!/usr/bin/perl

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

어떤 값은 false

에서는 Perl 프로그래밍 언어가 있 5 는 값은 false 입니다. 이:

  • undef
  • 0 —0
  • 0.0 —number0.0
  • '' —빈 문자열
  • '0' —행 0

여기에는 예제를 보여주는 이러한 모든 값을 해석에 의해 펄으로 거짓말입니다. 코드 표시됩니다 5 배 이 단어 'false':

▶ Run
#!/usr/bin/perl

foreach my $val (undef, 0, 0.0, '', '0') {
    if ($val) {
        print "true\n";
    } else {
        print "false\n";
    }
}

어떤 값은 true

진리는 모든 값을 제외하고,5 개는 것은 거짓입니다.

규칙

기억하기 위해서는 거짓이 사용할 수 있습니다률: "모든 0 은 거짓 이외의 다른'0 하지만 진정한 행".

이러한 모든 5 값이 false 이면 그들은 숫자로 사용되 0. 여기에는 코드는 것을 확인에 코드를 표시합 5 으:

▶ Run
#!/usr/bin/perl

foreach my $val (undef, 0, 0.0, '', '0') {
    print $val + 0, "\n";
}

그러나 사용하는 경우, use strict;use warnings; (거의 항상하고 가치가있), 경우에 undef 고 빈 문자열 펄 경고 표시됩니다.

여기에는 코드고 그 결과 그의 작품의 경우에 undef:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = undef;

print $var + 0;
Use of uninitialized value $var in addition (+) at script.pl line 8.
0

그리고 여기에 코드 및 결과의 경우에는 빈 문자열:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = '';

print $var + 0;
Argument "" isn't numeric in addition (+) at script.pl line 8.
0

0 but true

Perl 에서 있은 값에 Boolean 컨텍스트가 사실이지만,에 사용되는 경우 로 변환로 수니다. 이러한 모든 값을 문자열입니다.

예를 들어,문자열 '0ASDF' 는 예를 들어,이러한 값입니다. 로 사용되는 부울 값을 가 이 문자열로 해석됩니다 사실이다. 정말기 2 선,이는 거짓말 빈 문자열과 문자열을 포함하는 단 하나의 문자는 번호로,선 '0ASDF' 지 어느 하나의 이러한 두 개의 선은,그래서 그것은 거짓과 진실입니다.

여기에는 코드는 무엇인지 보여 줄 '0ASDF' 은 진정한(코드를 표시 문자열 'true'):

▶ Run
#!/usr/bin/perl

if ('0ASDF') {
    print 'true';
} else {
    print 'false';
}

이라인 '0ASDF' 로 사용하는 번호로 해석되 0 (그러나,포함되어 있는 경우 use strict;, use warnings; 될 것입니다 경고):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = '0ASDF';

print $var + 0;
Argument "0ASDF" isn't numeric in addition (+) at script.pl line 8.
0

가장 유명의 사용 0 but true 값에서 발생하는 Perl DBI 라이브러리,그것이 문자열을 사용합 '0E0'.

배열,해시,참조

배열이 있는 경우에는 적어도 하나의 값이 있습니다. 는 경우에는 배열의 값이 없,다음 배열은 거짓입니다.

마찬가지로,해시는 하나 이상의 값의 쌍 다음 해시 사실이다. 해시되지 않은 아무 값의 쌍 그것은 거짓말입니다.

참고는 항상 진실하다,상관없이 무엇을 의미한다. 도에 대한 참조 빈 배열 [] 빈 해시 {} 은 진실입니다.

하나 빈 문자열

자주 쓰는 코드에서는 진리입니다 숫자 중 하나,그리고 거짓말 사용 수니다.

흥미롭게도,그가 생각하는 정식 Perl 값을 나타내기 위해 거짓말을하지 않 수 0,그리고 빈 문자열 ''.

예를 들어 여기에는 이러한 방법을 보여 줍니다. 우리가 선 'Hello'로,진리로 단항 운영자 ! 으로 거짓말:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

print Dumper !'Hello';

결과 화면에 등장한 텍스트 $VAR1 = '';

사용하는 경우에는 운영자 ! 두 번 우리가 얻은 정식 가치는 진리의 관점에서의 펄:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

print Dumper !!'Hello';

(스크린에 나타나는 텍스트 $VAR1 = 1;).

문제의 가독성

자주 쓰는 코드에서는 진리입니다 숫자 중 하나,그리고 거짓말 사용 수니다. 하지만,불행하게도,에서 이러한 숫자는 그것이 무엇인지 명확하지 않 이는—번호(있을 수 있습 다른 숫자) 또는 플래그를 의미 사실이다.

여기에는 예입니다. 여기에 1 workers 의미에 사용할 필요가있는 하나의 작업자(대체 될 수 있습니다 10). 단위 가 log 의 로깅을 사용할(대만하지 않으려면 0 으):

my $config = {
    workers => 1,
    log => 1,
};

다른 기사