Почему я получаю "Псевдо-хеши не рекомендуется"? - PullRequest
4 голосов
/ 07 марта 2011

У меня есть этот код

if (defined($xml->{account}->{p}) == '2') {
...
}

, который дает мне это предупреждение

Pseudo-hashes are deprecated at a.pl line 48.

Проблема в том, что в некоторых случаях $xml->{account}->{p} не существует, поэтому я добавил функцию defined.

$xml это объект, если это имеет значение?

Как это можно исправить, чтобы Perl не жаловался?

1 Ответ

11 голосов
/ 07 марта 2011

Либо $xml, либо $xml->{account} является массивом, а не хэшем (вы можете использовать ref, чтобы проверить это, см. perldoc -f ref). В Perl появилась устаревшая функция под названием «псевдо-хеш», которая позволяла получать доступ к специальным массивам с помощью синтаксиса хеша. Если вам небезразлична история, вы можете поискать ее в гугле или взглянуть на книгу верблюдов более старого издания.

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