Что означает запись «Array => [...]» - PullRequest
0 голосов
/ 07 июля 2019

В некотором коде Perl, который меня попросили сохранить, я столкнулся со следующей конструкцией:

myArray => ['id1', 'id2', 'id3', 'id4']

Я искал в Интернете какое-то определение / объяснение этого, но все, что я мог найти, это ссылка на скалярное хеширование:

https://www.guru99.com/perl-tutorials.html

Это фрагмент кода, с которым я столкнулся:

$config = eval {
    XMLin(
        $inFile,
        MyArray => [
            'id1', 'id2',"id3", 'id4'
        ]
    );
};

Что означает этот синтаксис хэширования всего массива (без хеш-значений)?

1 Ответ

5 голосов
/ 07 июля 2019

Вы упоминаете хеширование и хэши, но ни один из них не задействован.


IDENT => ...

совпадает с

'IDENT', ...

[ ... ]

в основном эквивалентно

do { my @anon = ( ... ); \@anon }

кроме как без новой области видимости.


XMLin(
    $inFile,
    MyArray => [
        'id1', 'id2',"id3", 'id4'
    ]
);

эквивалентно

my @anon = ( 'id1', 'id2', 'id3', 'id4' );
XMLin($inFile, 'MyArray', \@anon);

Это неправильный вызов XMLin. Если присутствует, вторым аргументом должно быть имя одной из опций (например, ForceArray.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...