할 수 있습 undef 을 이 해시키 펄?

대답은 없습니다.

undef 할 수 없는 해시 키에 Perl. 그러나 거기에는 미묘 생각할 수 있습 할 수 있습니다. 아래에 정보.

무엇을 해시

하나의 데이터 구조에 존재하는 프로그래밍 언어,Perl 로는 해시입니다. 해시는 순서가 설정되는 값입니다. 여기에 예를 들어 해쉬:

my %h = (
    aa => 1,
    bb => 2,
);

이 해시 저장되어 두 쌍의 값이 있습니다. 키 이름을 가진 'aa' 저장된 값 1, 에서 키 이름을 가진 'bb' 값을 저장 2. 를 얻는 이러한 값을 사용하여 구문 $h{aa}$h{bb}.

는 무엇입 undef

undef 특별한 값을에서는 Perl 의미하는,아무 소용이 없습니다. 을 만드는 경우는 변수만을 할당 값을,그 값은 단지 undef:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var;

print Dumper $var;

프로그램에 텍스트가 표시됩니다 $VAR1 = undef;.

undef 는 여전히 사용할 수 있는 경우에 당신은에 액세스 존재하지 않는 배열 요소 또는 존재하지 않는 키에 해시입니다. 에 명시적으로 할당할 수도 있습니다 undef 변수: $var = undef;.

잘못된 사용 1

여기에 샘플 프로그램 보이는 undef 열쇠가 될 수 있습니다 hash:

▶ Run
#!/usr/bin/perl

my %h = (
    undef => 'asdf',
);

print $h{undef};

프로그램에 텍스트가 표시됩 asdf. 즉처럼 우리는 우리에서 만들어 해쉬 키 undef, 그리고 나만의 값이 핵심이다. 하지만 그렇지 않습니다. 이 예제에서는 값은 저장 키 'undef',즉 행 'undef',실제 undef.

이로 인해 발생하는 두 가지 특징이다.

을 만들 때 해시 우리가 만들어에서 몇 가지 키-값 코드를 사용하여 undef => 'asdf',. 이 코드를 사용하는 운영자 =>. 의 특색이 문는 어떤 상황에서 그는 무엇을 할 수 있는 것은 왼쪽으로는 문자열을 사용합니다. 그는 결론처럼 무엇을 왼쪽의 => 큰따옴표로 묶여 있습니다. undef => 'asdf','undef' => 'asdf',.

두 번째 특징은 어떻게 우리가 값을 얻을에서 해쉬에 의 열쇠이다. 우리가 사용하는 구문 $h{undef}. 다음 Perl 생각하는 것에 중괄호 문자열입니다. 우리가 무엇을 작성과 동일한 $h{'undef'}.

는지 확인하실 수 있습 그것이 정말로 스크립트를 실행하는 경우 연결하여 특별한 모듈 신의 코드를 실행하는 방법을 보여 줍니다 Perl 이해하고 코드입니다. perl -MO=Deparse script.pl. 출력은 다음과 같습니다.

my(%h) = ('undef', 'asdf');
print $h{'undef'};
script.pl syntax OK

잘못 사용하면 2

여기에 또 다른 예를 들어 코드의하는 것으로 잘못 생각 undef 열쇠가 될 수 있습니다 해시입니다. 아,그것은 거기에 우리가 사용하는 실제 undef,지선 'undef':

▶ Run
#!/usr/bin/perl

my $var = undef;

my %h = (
    $var => 'asdf',
);

print $h{$var};

프로그램에 텍스트가 표시됩 asdf. 즉,우리는 생각은 우리가 만 이 값은 해쉬하여 키 undef.

하지만 정말,우리는 배치에서 값을 키 '' (빈 문자열). 는 경우 추가 이 프로그램의 끝 라인 use Data::Dumperwarn Dumper \%h;, 를 시작한 후 화면에서는 실제로 모 hash:

$VAR1 = {
          '' => 'asdf'
        };

$var 값을 포함 undef지만,에 사용되는 경우 $var => 'asdf',$h{$var} undef 로 대체되면 빈 문자열 ''.

를 추가하는 경우에는 코드 use strict;use warnings; 일 (는 거의 항상 하는 가치가 있음) 출력에서 그것을 볼 수 있는 Perl 에 대해 경고하는 이 사용:

Use of uninitialized value $var in list assignment at script.pl line 8.
Use of uninitialized value $var in hash element at script.pl line 12.

요약

undef 할 수 없는 키의 값 Perl 에서는 해시입니다. 키에 Perl 해시는 항상 합니다. (만 지정하는 빈 문자열 '' 할 수도 있습의 열쇠가 될). 과 값은 해쉬할 수 있습 절대적으로 어떤 과 하는 문제가 없다 undef.

다른 기사