Может кто-нибудь объяснить, как эта функция справки работает с этой подпрограммой Perl? - PullRequest
0 голосов
/ 29 апреля 2019

это подпрограмма, которую я не мог понять, я пытался передать некоторый массив и хэш в качестве аргумента, но не смог понять это

sub List {

        my $value = shift;
        my $key = shift; 

     if (ref($value->{$key}) eq ARRAY) {

        $value->{$key}
     }
     elsif (ref($value->{$key}) eq HASH) {
        [$value->{$key}]
     }
     else { [
     ]
     }
    }

1 Ответ

3 голосов
/ 29 апреля 2019

Ожидается, что первый аргумент будет ссылкой на хеш.

Второй аргумент является ключом элемента ссылочного хэша.

Если значение элемента является ссылкой на массив, эта ссылка возвращается.

my @a = ...;
my %h = { key => \@a };
List(\%h, 'key')   # Returns \@a

Если значение элемента является ссылкой на хеш, возвращается ссылка на массив, содержащий эту ссылку на хеш.

my %inner = ...;
my %h = { key => \%inner };
List(\%h, 'key')   # Returns [ \%inner ]

В противном случае возвращает ссылку на пустой хеш

my %h = { };
List(\%h, 'key')   # Returns []
...